From cdda083a6f792cd23e8e58d8a50cca2693c63b4d Mon Sep 17 00:00:00 2001 From: Cameron Mace Date: Wed, 11 May 2016 15:35:20 -0400 Subject: [PATCH] [android] Animate MylocationView direction Fixes #4942 --- .../mapboxsdk/maps/widgets/MyLocationView.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java index 23c46bfd3..b3e0ed4d8 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java @@ -1,5 +1,6 @@ package com.mapbox.mapboxsdk.maps.widgets; +import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Canvas; @@ -62,6 +63,7 @@ public class MyLocationView extends View { private ValueAnimator locationChangeAnimator; private ValueAnimator accuracyAnimator; + private ObjectAnimator directionAnimator; private Drawable foregroundDrawable; private Drawable foregroundBearingDrawable; @@ -390,7 +392,16 @@ public class MyLocationView extends View { newDir -= 360.f; } compassDirection = newDir; - invalidate(); + + if (directionAnimator != null) { + directionAnimator.end(); + directionAnimator = null; + } + + directionAnimator = ObjectAnimator.ofFloat(this, View.ROTATION, oldDir, newDir); + directionAnimator.setDuration(1000); + directionAnimator.start(); + } else { compassDirection = 0; }