[android] #3276 - add show/hide animation to view markers
This commit is contained in:
@@ -32,6 +32,11 @@ public class MapboxConstants {
|
||||
*/
|
||||
public static final int ANIMATION_DURATION = 300;
|
||||
|
||||
/**
|
||||
* Default short animation time
|
||||
*/
|
||||
public static final int ANIMATION_DURATION_SHORT = 150;
|
||||
|
||||
/**
|
||||
* The currently supported minimum zoom level.
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.mapbox.mapboxsdk.maps;
|
||||
|
||||
import android.Manifest;
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
@@ -36,6 +38,7 @@ import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.util.LongSparseArray;
|
||||
import android.support.v4.view.GestureDetectorCompat;
|
||||
import android.support.v4.view.ScaleGestureDetectorCompat;
|
||||
import android.support.v4.view.animation.FastOutSlowInInterpolator;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
@@ -1444,8 +1447,16 @@ public class MapView extends FrameLayout {
|
||||
mViewHolder.setX(point.x - (mViewHolder.getMeasuredWidth() / 2));
|
||||
mViewHolder.setY(point.y - (mViewHolder.getMeasuredHeight() / 2));
|
||||
|
||||
if (mViewHolder.getVisibility() == View.GONE) {
|
||||
mViewHolder.setVisibility(View.VISIBLE);
|
||||
if (mViewHolder.getVisibility() == GONE) {
|
||||
mViewHolder.animate().cancel();
|
||||
mViewHolder.setAlpha(0);
|
||||
mViewHolder.animate().alpha(1).setDuration(MapboxConstants.ANIMATION_DURATION_SHORT).setInterpolator(new FastOutSlowInInterpolator()).setListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
super.onAnimationStart(animation);
|
||||
mViewHolder.setVisibility(VISIBLE);
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import android.content.Context;
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorInflater;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.graphics.Bitmap;
|
||||
import android.location.Location;
|
||||
import android.os.SystemClock;
|
||||
@@ -15,6 +14,7 @@ import android.support.annotation.Nullable;
|
||||
import android.support.annotation.UiThread;
|
||||
import android.support.v4.util.LongSparseArray;
|
||||
import android.support.v4.util.Pools;
|
||||
import android.support.v4.view.animation.FastOutSlowInInterpolator;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
@@ -22,7 +22,6 @@ import android.view.View;
|
||||
import com.mapbox.mapboxsdk.MapboxAccountManager;
|
||||
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.Animation;
|
||||
|
||||
import com.mapbox.mapboxsdk.annotations.Annotation;
|
||||
import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions;
|
||||
@@ -655,9 +654,7 @@ public class MapboxMap {
|
||||
for (Map.Entry<Marker, View> outBoundsEntry : outBoundsMarker.entrySet()) {
|
||||
convertView = outBoundsEntry.getValue();
|
||||
if (convertView != null) {
|
||||
convertView.setVisibility(View.GONE);
|
||||
viewSimplePool.release(convertView);
|
||||
mMarkerViews.remove(outBoundsEntry.getKey().getId());
|
||||
removeMarkerView(outBoundsEntry.getKey().getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -998,10 +995,27 @@ public class MapboxMap {
|
||||
}
|
||||
|
||||
private void removeMarkerView(long id) {
|
||||
View viewHolder = mMarkerViews.get(id);
|
||||
final View viewHolder = mMarkerViews.get(id);
|
||||
if (viewHolder != null) {
|
||||
viewHolder.setVisibility(View.GONE);
|
||||
viewSimplePool.release(viewHolder);
|
||||
|
||||
// cancel ongoing animations
|
||||
viewHolder.animate().cancel();
|
||||
viewHolder.setAlpha(1);
|
||||
|
||||
// animate alpha
|
||||
viewHolder.animate()
|
||||
.alpha(0)
|
||||
.setDuration(MapboxConstants.ANIMATION_DURATION_SHORT)
|
||||
.setInterpolator(new FastOutSlowInInterpolator())
|
||||
.setListener(new AnimatorListenerAdapter() {
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
super.onAnimationEnd(animation);
|
||||
viewHolder.setVisibility(View.GONE);
|
||||
viewSimplePool.release(viewHolder);
|
||||
}
|
||||
});
|
||||
}
|
||||
mMarkerViews.remove(id);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user