diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-06-21 14:20:29 +0200 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2019-06-24 11:37:21 +0200 |
commit | fe570fb206515866906d6d0527eba7eb7bb0dbfd (patch) | |
tree | 72ff664e99263ad4e89330258ab6e7407234bb57 /platform/android/MapboxGLAndroidSDK/src/main/java | |
parent | e60b48eca9e752a09e54d4b1277ac1ab6aec5629 (diff) | |
download | qtlocation-mapboxgl-fe570fb206515866906d6d0527eba7eb7bb0dbfd.tar.gz |
[android] reset location layer animators when render mode changes
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java')
2 files changed, 35 insertions, 4 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinator.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinator.java index 50bbb7acfc..6337287770 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinator.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinator.java @@ -347,6 +347,34 @@ final class LocationAnimatorCoordinator { createNewFloatAnimator(ANIMATOR_CAMERA_COMPASS_BEARING, previousCameraBearing, normalizedCameraBearing); } + void resetAllLayerAnimations() { + MapboxLatLngAnimator latLngAnimator = (MapboxLatLngAnimator) animatorArray.get(ANIMATOR_LAYER_LATLNG); + MapboxFloatAnimator gpsBearingAnimator = (MapboxFloatAnimator) animatorArray.get(ANIMATOR_LAYER_GPS_BEARING); + MapboxFloatAnimator compassBearingAnimator = + (MapboxFloatAnimator) animatorArray.get(ANIMATOR_LAYER_COMPASS_BEARING); + + if (latLngAnimator != null && gpsBearingAnimator != null) { + LatLng currentLatLng = (LatLng) latLngAnimator.getAnimatedValue(); + LatLng currentLatLngTarget = latLngAnimator.getTarget(); + createNewLatLngAnimator(ANIMATOR_LAYER_LATLNG, currentLatLng, currentLatLngTarget); + + float currentGpsBearing = (float) gpsBearingAnimator.getAnimatedValue(); + float currentGpsBearingTarget = gpsBearingAnimator.getTarget(); + createNewFloatAnimator(ANIMATOR_LAYER_GPS_BEARING, currentGpsBearing, currentGpsBearingTarget); + + playAnimators(getAnimationDuration(), ANIMATOR_LAYER_LATLNG, ANIMATOR_LAYER_GPS_BEARING); + } + + if (compassBearingAnimator != null) { + float currentLayerBearing = getPreviousLayerCompassBearing(); + float currentLayerBearingTarget = compassBearingAnimator.getTarget(); + createNewFloatAnimator(ANIMATOR_LAYER_COMPASS_BEARING, currentLayerBearing, currentLayerBearingTarget); + playAnimators( + compassAnimationEnabled ? COMPASS_UPDATE_RATE_MS : 0, + ANIMATOR_LAYER_COMPASS_BEARING); + } + } + void cancelZoomAnimation() { cancelAnimator(ANIMATOR_ZOOM); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java index 5d8847eab4..5b2dcd8554 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java @@ -1393,6 +1393,9 @@ public final class LocationComponent { animationsValueChangeListeners.addAll(locationLayerController.getAnimationListeners()); animationsValueChangeListeners.addAll(locationCameraController.getAnimationListeners()); locationAnimatorCoordinator.updateAnimatorListenerHolders(animationsValueChangeListeners); + locationAnimatorCoordinator.resetAllCameraAnimations(mapboxMap.getCameraPosition(), + locationCameraController.getCameraMode() == CameraMode.TRACKING_GPS_NORTH); + locationAnimatorCoordinator.resetAllLayerAnimations(); } @NonNull @@ -1517,7 +1520,8 @@ public final class LocationComponent { } @NonNull - private OnCameraTrackingChangedListener cameraTrackingChangedListener = new OnCameraTrackingChangedListener() { + @VisibleForTesting + OnCameraTrackingChangedListener cameraTrackingChangedListener = new OnCameraTrackingChangedListener() { @Override public void onCameraTrackingDismissed() { for (OnCameraTrackingChangedListener listener : onCameraTrackingChangedListeners) { @@ -1530,8 +1534,6 @@ public final class LocationComponent { locationAnimatorCoordinator.cancelZoomAnimation(); locationAnimatorCoordinator.cancelTiltAnimation(); updateAnimatorListenerHolders(); - locationAnimatorCoordinator.resetAllCameraAnimations(mapboxMap.getCameraPosition(), - locationCameraController.getCameraMode() == CameraMode.TRACKING_GPS_NORTH); for (OnCameraTrackingChangedListener listener : onCameraTrackingChangedListeners) { listener.onCameraTrackingChanged(currentMode); } @@ -1539,7 +1541,8 @@ public final class LocationComponent { }; @NonNull - private OnRenderModeChangedListener renderModeChangedListener = new OnRenderModeChangedListener() { + @VisibleForTesting + OnRenderModeChangedListener renderModeChangedListener = new OnRenderModeChangedListener() { @Override public void onRenderModeChanged(int currentMode) { updateAnimatorListenerHolders(); |