[android] #5115 - add visible integration to MarkerView
This commit is contained in:
committed by
Tobrun Van Nuland
parent
1d7d8a9f2f
commit
621bb01845
@@ -28,6 +28,7 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base
|
||||
protected int selectAnimRes;
|
||||
protected int deselectAnimRes;
|
||||
protected int rotation;
|
||||
protected boolean visible = true;
|
||||
|
||||
public BaseMarkerViewOptions() {
|
||||
centerOffset = new PointF();
|
||||
@@ -84,6 +85,11 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base
|
||||
return getThis();
|
||||
}
|
||||
|
||||
public T visible(boolean visible){
|
||||
this.visible = visible;
|
||||
return getThis();
|
||||
}
|
||||
|
||||
public LatLng getPosition() {
|
||||
return position;
|
||||
}
|
||||
@@ -124,6 +130,10 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base
|
||||
return rotation;
|
||||
}
|
||||
|
||||
public boolean isVisible() {
|
||||
return visible;
|
||||
}
|
||||
|
||||
public abstract T getThis();
|
||||
|
||||
public abstract U getMarker();
|
||||
|
||||
@@ -12,6 +12,7 @@ public class MarkerView extends Marker {
|
||||
private PointF centerOffset;
|
||||
private Point infoWindowOffset;
|
||||
private boolean flat;
|
||||
private boolean visible;
|
||||
|
||||
private int selectAnimRes;
|
||||
private int deselectAnimRes;
|
||||
@@ -82,6 +83,17 @@ public class MarkerView extends Marker {
|
||||
this.tiltValue = tiltValue;
|
||||
}
|
||||
|
||||
public void setVisible(boolean visible) {
|
||||
this.visible = visible;
|
||||
if (markerViewManager != null) {
|
||||
markerViewManager.animateVisible(this, visible);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isVisible() {
|
||||
return visible;
|
||||
}
|
||||
|
||||
public void setRotation(float rotation) {
|
||||
this.rotation = rotation;
|
||||
if (markerViewManager != null) {
|
||||
|
||||
@@ -49,6 +49,13 @@ public class MarkerViewManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void animateVisible(@NonNull MarkerView marker, boolean visible) {
|
||||
View convertView = mMarkerViewMap.get(marker);
|
||||
if (convertView != null) {
|
||||
convertView.setVisibility(visible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
public void update() {
|
||||
View convertView;
|
||||
for (MarkerView marker : mMarkerViewMap.keySet()) {
|
||||
@@ -57,7 +64,7 @@ public class MarkerViewManager {
|
||||
PointF point = mapboxMap.getProjection().toScreenLocation(marker.getPosition());
|
||||
convertView.setX(point.x - (convertView.getMeasuredWidth() / 2));
|
||||
convertView.setY(point.y - (convertView.getMeasuredHeight() / 2));
|
||||
if (convertView.getVisibility() == View.GONE) {
|
||||
if (marker.isVisible() && convertView.getVisibility() == View.GONE) {
|
||||
convertView.animate().cancel();
|
||||
convertView.setAlpha(0);
|
||||
AnimatorUtils.alpha(convertView, 1);
|
||||
@@ -181,6 +188,9 @@ public class MarkerViewManager {
|
||||
// alpha
|
||||
adaptedView.setAlpha(marker.getAlpha());
|
||||
|
||||
// visible
|
||||
adaptedView.setVisibility(marker.isVisible() ? View.VISIBLE : View.GONE);
|
||||
|
||||
if (mapboxMap.getSelectedMarkers().contains(marker)) {
|
||||
// if a marker to be shown was selected
|
||||
// replay that animation with duration 0
|
||||
|
||||
@@ -27,6 +27,7 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV
|
||||
selectAnimatorResource(in.readInt());
|
||||
deselectAnimatorResource(in.readInt());
|
||||
rotation(in.readInt());
|
||||
visible(in.readByte() != 0);
|
||||
if (in.readByte() != 0) {
|
||||
// this means we have an icon
|
||||
String iconId = in.readString();
|
||||
@@ -52,11 +53,12 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV
|
||||
out.writeString(getSnippet());
|
||||
out.writeString(getTitle());
|
||||
out.writeByte((byte) (isFlat() ? 1 : 0));
|
||||
out.writeParcelable(getCenterOffset(),flags);
|
||||
out.writeParcelable(getInfoWindowOffset(),flags);
|
||||
out.writeParcelable(getCenterOffset(), flags);
|
||||
out.writeParcelable(getInfoWindowOffset(), flags);
|
||||
out.writeInt(getSelectAnimRes());
|
||||
out.writeInt(getDeselectAnimRes());
|
||||
out.writeInt(getRotation());
|
||||
out.writeByte((byte) (isVisible() ? 1 : 0));
|
||||
Icon icon = getIcon();
|
||||
out.writeByte((byte) (icon != null ? 1 : 0));
|
||||
if (icon != null) {
|
||||
@@ -77,6 +79,7 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV
|
||||
marker.setSelectAnimRes(selectAnimRes);
|
||||
marker.setDeselectAnimRes(deselectAnimRes);
|
||||
marker.setRotation(rotation);
|
||||
marker.setVisible(visible);
|
||||
return marker;
|
||||
}
|
||||
|
||||
@@ -95,11 +98,8 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
MarkerViewOptions that = (MarkerViewOptions) o;
|
||||
|
||||
return marker != null ? marker.equals(that.marker) : that.marker == null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user