[android] Implement Parcelable annotations

Fixes #2638
This commit is contained in:
Leith Bade
2015-10-22 17:18:03 +11:00
parent 84a767b5f3
commit be817260d7
3 changed files with 119 additions and 3 deletions

View File

@@ -1,10 +1,49 @@
package com.mapbox.mapboxsdk.annotations;
import android.graphics.Bitmap;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.Nullable;
import com.mapbox.mapboxsdk.geometry.LatLng;
public final class MarkerOptions {
public final class MarkerOptions implements Parcelable {
public static final Parcelable.Creator<MarkerOptions> CREATOR
= new Parcelable.Creator<MarkerOptions>() {
public MarkerOptions createFromParcel(Parcel in) {
return new MarkerOptions(in);
}
public MarkerOptions[] newArray(int size) {
return new MarkerOptions[size];
}
};
private MarkerOptions(Parcel in) {
marker = new Marker();
position((LatLng) in.readParcelable(LatLng.class.getClassLoader()));
snippet(in.readString());
String spriteId = in.readString();
Bitmap spriteBitmap = in.readParcelable(Bitmap.class.getClassLoader());
Sprite icon = new Sprite(spriteId, spriteBitmap);
icon(icon);
title(in.readString());
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeParcelable(getPosition(), flags);
out.writeString(getSnippet());
out.writeString(getIcon().getId());
out.writeParcelable(getIcon().getBitmap(), flags);
out.writeString(getTitle());
}
private Marker marker;

View File

@@ -1,11 +1,49 @@
package com.mapbox.mapboxsdk.annotations;
import android.os.Parcel;
import android.os.Parcelable;
import com.mapbox.mapboxsdk.geometry.LatLng;
import java.util.ArrayList;
import java.util.List;
public final class PolygonOptions {
public final class PolygonOptions implements Parcelable {
public static final Parcelable.Creator<PolygonOptions> CREATOR
= new Parcelable.Creator<PolygonOptions>() {
public PolygonOptions createFromParcel(Parcel in) {
return new PolygonOptions(in);
}
public PolygonOptions[] newArray(int size) {
return new PolygonOptions[size];
}
};
private PolygonOptions(Parcel in) {
polygon = new Polygon();
ArrayList<LatLng> pointsList = new ArrayList<>();
in.readList(pointsList, LatLng.class.getClassLoader());
addAll(pointsList);
alpha(in.readFloat());
fillColor(in.readInt());
strokeColor(in.readInt());
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeList(getPoints());
out.writeFloat(getAlpha());
out.writeInt(getFillColor());
out.writeInt(getStrokeColor());
}
private Polygon polygon;

View File

@@ -1,10 +1,49 @@
package com.mapbox.mapboxsdk.annotations;
import android.os.Parcel;
import android.os.Parcelable;
import com.mapbox.mapboxsdk.geometry.LatLng;
import java.util.ArrayList;
import java.util.List;
public final class PolylineOptions {
public final class PolylineOptions implements Parcelable {
public static final Parcelable.Creator<PolylineOptions> CREATOR
= new Parcelable.Creator<PolylineOptions>() {
public PolylineOptions createFromParcel(Parcel in) {
return new PolylineOptions(in);
}
public PolylineOptions[] newArray(int size) {
return new PolylineOptions[size];
}
};
private PolylineOptions(Parcel in) {
polyline = new Polyline();
ArrayList<LatLng> pointsList = new ArrayList<>();
in.readList(pointsList, LatLng.class.getClassLoader());
addAll(pointsList);
alpha(in.readFloat());
color(in.readInt());
width(in.readFloat());
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeList(getPoints());
out.writeFloat(getAlpha());
out.writeInt(getColor());
out.writeFloat(getWidth());
}
private Polyline polyline;