summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2016-05-12 15:44:02 +0200
committerTobrun <tobrun@mapbox.com>2016-05-20 12:00:03 +0200
commitfeb5832ee9f19405b7cbcbc65be707a7d41575b7 (patch)
treeb112a5e8d8cb682930a266a79666dfd6c3013639 /platform
parent833319ce91de01a63373748eed75bfefd517b4b1 (diff)
downloadqtlocation-mapboxgl-feb5832ee9f19405b7cbcbc65be707a7d41575b7.tar.gz
[android] #3276 - view reuse animation state fix - disabled selection for gl markers
Diffstat (limited to 'platform')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java6
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java44
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;
}