diff options
author | Tobrun <tobrun@mapbox.com> | 2016-05-12 15:44:02 +0200 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2016-05-20 12:00:03 +0200 |
commit | feb5832ee9f19405b7cbcbc65be707a7d41575b7 (patch) | |
tree | b112a5e8d8cb682930a266a79666dfd6c3013639 /platform | |
parent | 833319ce91de01a63373748eed75bfefd517b4b1 (diff) | |
download | qtlocation-mapboxgl-feb5832ee9f19405b7cbcbc65be707a7d41575b7.tar.gz |
[android] #3276 - view reuse animation state fix - disabled selection for gl markers
Diffstat (limited to 'platform')
2 files changed, 35 insertions, 15 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 4468e4f5da..479db4c010 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -59,6 +59,7 @@ import android.widget.ArrayAdapter; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ListView; +import android.widget.TextView; import android.widget.ZoomButtonsController; import com.almeros.android.multitouch.gesturedetectors.RotateGestureDetector; @@ -1754,7 +1755,10 @@ public class MapView extends FrameLayout { if (annotation instanceof Marker) { if (annotation.getId() == newSelectedMarkerId) { if (selectedMarkers.isEmpty() || !selectedMarkers.contains(annotation)) { - mMapboxMap.selectMarker((Marker) annotation); + // only handle click if no marker view is available + if(mMapboxMap.getMarkerViews().get(annotation.getId())==null) { + mMapboxMap.selectMarker((Marker) annotation); + } } break; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 5e4f4b872c..1fa049c2a3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -654,7 +654,13 @@ public class MapboxMap { for (Map.Entry<Marker, View> outBoundsEntry : outBoundsMarker.entrySet()) { convertView = outBoundsEntry.getValue(); if (convertView != null) { - removeMarkerView(outBoundsEntry.getKey().getId()); + if (mMarkerViewItemAnimatorOutRes != 0) { + removeMarkerView(outBoundsEntry.getKey().getId()); + Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), mMarkerViewItemAnimatorOutRes); + animator.setDuration(0); + animator.setTarget(convertView); + animator.start(); + } } } @@ -662,6 +668,7 @@ public class MapboxMap { List<Marker> inBoundsMarkers = result.getInBounds(); for (final Marker marker : inBoundsMarkers) { convertView = viewSimplePool.acquire(); + Log.v("TAG", "Calling get view for " + marker.getId()); View adaptedView = mMarkerViewAdapter.getView(marker, convertView, mMapView); if (adaptedView != null) { // hack to hide old marker, todo replace with visibility @@ -673,6 +680,16 @@ public class MapboxMap { } marker.setIcon(IconFactory.recreate(icon.getId(), mViewMarkerBitmap)); } + + if (mSelectedMarkers.contains(marker)) { + if (mMarkerViewItemAnimatorInRes != 0) { + Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), mMarkerViewItemAnimatorInRes); + animator.setDuration(0); + animator.setTarget(convertView); + animator.start(); + } + } + adaptedView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -684,7 +701,7 @@ public class MapboxMap { if (!clickHandled) { if (mMarkerViewItemAnimatorInRes != 0) { - Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(),mMarkerViewItemAnimatorInRes); + Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), mMarkerViewItemAnimatorInRes); animator.setTarget(v); animator.addListener(new AnimatorListenerAdapter() { @Override @@ -1009,13 +1026,13 @@ public class MapboxMap { .setInterpolator(new FastOutSlowInInterpolator()) .setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - viewHolder.setVisibility(View.GONE); - viewSimplePool.release(viewHolder); - } - }); + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + viewHolder.setVisibility(View.GONE); + viewSimplePool.release(viewHolder); + } + }); } mMarkerViews.remove(id); } @@ -1177,8 +1194,7 @@ public class MapboxMap { @UiThread public void selectMarker(@NonNull Marker marker) { if (marker == null) { - Log.w(MapboxConstants.TAG, "marker was null, so just" + - " returning"); + Log.w(MapboxConstants.TAG, "marker was null, so just returning"); return; } @@ -1221,8 +1237,8 @@ public class MapboxMap { } View viewMarker = mMarkerViews.get(marker.getId()); - if(viewMarker!=null){ - Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(),mMarkerViewItemAnimatorOutRes); + if (viewMarker != null) { + Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), mMarkerViewItemAnimatorOutRes); animator.setTarget(viewMarker); animator.start(); } @@ -1284,7 +1300,7 @@ public class MapboxMap { return mOnMarkerViewClickListener; } - public void setMarkerViewItemAnimation(@AnimatorRes int animationInRes,@AnimatorRes int animationOutRes) { + public void setMarkerViewItemAnimation(@AnimatorRes int animationInRes, @AnimatorRes int animationOutRes) { mMarkerViewItemAnimatorInRes = animationInRes; mMarkerViewItemAnimatorOutRes = animationOutRes; } |