From d2fdf4a4ac7ae678e194dab2770724624fa33e79 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Fri, 20 May 2016 09:45:35 +0200 Subject: [PATCH] [android] #3276 - hardware accelerate animations --- .../java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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 75b0a8808..c04dbc0e3 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 @@ -706,7 +706,7 @@ public class MapboxMap { final int animSelectRes = marker.getSelectAnimRes(); adaptedView.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View v) { + public void onClick(final View v) { boolean clickHandled = false; if (mOnMarkerViewClickListener != null) { clickHandled = mOnMarkerViewClickListener.onMarkerClick(marker, v, adapter); @@ -714,6 +714,7 @@ public class MapboxMap { if (!clickHandled) { if (animSelectRes != 0) { + v.setLayerType(View.LAYER_TYPE_HARDWARE, null); Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), animSelectRes); animator.setTarget(v); animator.addListener(new AnimatorListenerAdapter() { @@ -721,6 +722,7 @@ public class MapboxMap { public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); selectMarker(marker); + v.setLayerType(View.LAYER_TYPE_NONE, null); } }); animator.start(); @@ -1298,11 +1300,19 @@ public class MapboxMap { } if (marker instanceof MarkerView) { - View viewMarker = mMarkerViewMap.get(marker); + final View viewMarker = mMarkerViewMap.get(marker); if (viewMarker != null) { int deselectAnimatorRes = ((MarkerView) marker).getDeselectAnimRes(); if (deselectAnimatorRes != 0) { + viewMarker.setLayerType(View.LAYER_TYPE_HARDWARE, null); Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), deselectAnimatorRes); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + viewMarker.setLayerType(View.LAYER_TYPE_NONE, null); + } + }); animator.setTarget(viewMarker); animator.start(); }