diff options
author | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2018-09-10 13:49:07 +0200 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2018-09-12 13:59:11 +0200 |
commit | 229e35e9c38159632771f8da7ab1fd8681ac853c (patch) | |
tree | 81314e698f82ebf7ac80abeb1f6305092394f8ad /platform/android/MapboxGLAndroidSDK/src/main | |
parent | b2d4b82cdfeb0e3807b2b3027398fbeeda751b03 (diff) | |
download | qtlocation-mapboxgl-229e35e9c38159632771f8da7ab1fd8681ac853c.tar.gz |
[android] use the SparseArray instead of the HashMap in location animator coordinator
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main')
2 files changed, 26 insertions, 28 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 67a9727f5c..b8baa0d497 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 @@ -2,11 +2,11 @@ package com.mapbox.mapboxsdk.location; import android.animation.Animator; import android.animation.AnimatorSet; -import android.annotation.SuppressLint; import android.location.Location; import android.os.SystemClock; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.util.SparseArray; import android.view.animation.LinearInterpolator; import com.mapbox.mapboxsdk.camera.CameraPosition; @@ -14,9 +14,7 @@ import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapboxMap; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import static com.mapbox.mapboxsdk.location.LocationComponentConstants.ACCURACY_RADIUS_ANIMATION_DURATION; import static com.mapbox.mapboxsdk.location.LocationComponentConstants.COMPASS_UPDATE_RATE_MS; @@ -34,8 +32,7 @@ import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_ZOOM; final class LocationAnimatorCoordinator { - @SuppressLint("UseSparseArrays") - final Map<Integer, MapboxAnimator> animatorMap = new HashMap<>(); + final SparseArray<MapboxAnimator> animatorArray = new SparseArray<>(); final List<MapboxAnimator.OnLayerAnimationsValuesChangeListener> layerListeners = new ArrayList<>(); final List<MapboxAnimator.OnCameraAnimationsValuesChangeListener> cameraListeners = new ArrayList<>(); @@ -126,7 +123,7 @@ final class LocationAnimatorCoordinator { private LatLng getPreviousLayerLatLng() { LatLng previousLatLng; - MapboxAnimator latLngAnimator = animatorMap.get(ANIMATOR_LAYER_LATLNG); + MapboxAnimator latLngAnimator = animatorArray.get(ANIMATOR_LAYER_LATLNG); if (latLngAnimator != null) { previousLatLng = (LatLng) latLngAnimator.getAnimatedValue(); } else { @@ -136,7 +133,7 @@ final class LocationAnimatorCoordinator { } private float getPreviousLayerGpsBearing() { - LayerGpsBearingAnimator animator = (LayerGpsBearingAnimator) animatorMap.get(ANIMATOR_LAYER_GPS_BEARING); + LayerGpsBearingAnimator animator = (LayerGpsBearingAnimator) animatorArray.get(ANIMATOR_LAYER_GPS_BEARING); float previousBearing; if (animator != null) { previousBearing = (float) animator.getAnimatedValue(); @@ -148,7 +145,7 @@ final class LocationAnimatorCoordinator { private float getPreviousLayerCompassBearing() { LayerCompassBearingAnimator animator = - (LayerCompassBearingAnimator) animatorMap.get(ANIMATOR_LAYER_COMPASS_BEARING); + (LayerCompassBearingAnimator) animatorArray.get(ANIMATOR_LAYER_COMPASS_BEARING); float previousBearing; if (animator != null) { @@ -160,7 +157,7 @@ final class LocationAnimatorCoordinator { } private float getPreviousAccuracyRadius() { - LayerAccuracyAnimator animator = (LayerAccuracyAnimator) animatorMap.get(ANIMATOR_LAYER_ACCURACY); + LayerAccuracyAnimator animator = (LayerAccuracyAnimator) animatorArray.get(ANIMATOR_LAYER_ACCURACY); float previousRadius; if (animator != null) { previousRadius = (float) animator.getAnimatedValue(); @@ -243,10 +240,10 @@ final class LocationAnimatorCoordinator { private void playLocationAnimators(long duration) { List<Animator> locationAnimators = new ArrayList<>(); - locationAnimators.add(animatorMap.get(ANIMATOR_LAYER_LATLNG)); - locationAnimators.add(animatorMap.get(ANIMATOR_LAYER_GPS_BEARING)); - locationAnimators.add(animatorMap.get(ANIMATOR_CAMERA_LATLNG)); - locationAnimators.add(animatorMap.get(ANIMATOR_CAMERA_GPS_BEARING)); + locationAnimators.add(animatorArray.get(ANIMATOR_LAYER_LATLNG)); + locationAnimators.add(animatorArray.get(ANIMATOR_LAYER_GPS_BEARING)); + locationAnimators.add(animatorArray.get(ANIMATOR_CAMERA_LATLNG)); + locationAnimators.add(animatorArray.get(ANIMATOR_CAMERA_GPS_BEARING)); AnimatorSet locationAnimatorSet = new AnimatorSet(); locationAnimatorSet.playTogether(locationAnimators); locationAnimatorSet.setInterpolator(new LinearInterpolator()); @@ -256,8 +253,8 @@ final class LocationAnimatorCoordinator { private void playCompassAnimators(long duration) { List<Animator> compassAnimators = new ArrayList<>(); - compassAnimators.add(animatorMap.get(ANIMATOR_LAYER_COMPASS_BEARING)); - compassAnimators.add(animatorMap.get(ANIMATOR_CAMERA_COMPASS_BEARING)); + compassAnimators.add(animatorArray.get(ANIMATOR_LAYER_COMPASS_BEARING)); + compassAnimators.add(animatorArray.get(ANIMATOR_CAMERA_COMPASS_BEARING)); AnimatorSet compassAnimatorSet = new AnimatorSet(); compassAnimatorSet.playTogether(compassAnimators); compassAnimatorSet.setDuration(duration); @@ -265,27 +262,27 @@ final class LocationAnimatorCoordinator { } private void playAccuracyAnimator(long duration) { - MapboxAnimator animator = animatorMap.get(ANIMATOR_LAYER_ACCURACY); + MapboxAnimator animator = animatorArray.get(ANIMATOR_LAYER_ACCURACY); animator.setDuration(duration); animator.start(); } private void playZoomAnimator(long duration) { - MapboxAnimator animator = animatorMap.get(ANIMATOR_ZOOM); + MapboxAnimator animator = animatorArray.get(ANIMATOR_ZOOM); animator.setDuration(duration); animator.start(); } private void playTiltAnimator(long duration) { - MapboxAnimator animator = animatorMap.get(ANIMATOR_TILT); + MapboxAnimator animator = animatorArray.get(ANIMATOR_TILT); animator.setDuration(duration); animator.start(); } private void playCameraLocationAnimators(long duration) { List<Animator> locationAnimators = new ArrayList<>(); - locationAnimators.add(animatorMap.get(ANIMATOR_CAMERA_LATLNG)); - locationAnimators.add(animatorMap.get(ANIMATOR_CAMERA_GPS_BEARING)); + locationAnimators.add(animatorArray.get(ANIMATOR_CAMERA_LATLNG)); + locationAnimators.add(animatorArray.get(ANIMATOR_CAMERA_GPS_BEARING)); AnimatorSet locationAnimatorSet = new AnimatorSet(); locationAnimatorSet.playTogether(locationAnimators); locationAnimatorSet.setInterpolator(new LinearInterpolator()); @@ -305,7 +302,7 @@ final class LocationAnimatorCoordinator { } private void resetCameraLatLngAnimation(CameraPosition currentCameraPosition) { - CameraLatLngAnimator animator = (CameraLatLngAnimator) animatorMap.get(ANIMATOR_CAMERA_LATLNG); + CameraLatLngAnimator animator = (CameraLatLngAnimator) animatorArray.get(ANIMATOR_CAMERA_LATLNG); if (animator == null) { return; } @@ -317,7 +314,7 @@ final class LocationAnimatorCoordinator { } private void resetCameraGpsBearingAnimation(CameraPosition currentCameraPosition, boolean isGpsNorth) { - CameraGpsBearingAnimator animator = (CameraGpsBearingAnimator) animatorMap.get(ANIMATOR_CAMERA_GPS_BEARING); + CameraGpsBearingAnimator animator = (CameraGpsBearingAnimator) animatorArray.get(ANIMATOR_CAMERA_GPS_BEARING); if (animator == null) { return; } @@ -332,7 +329,7 @@ final class LocationAnimatorCoordinator { private void resetCameraCompassAnimation(CameraPosition currentCameraPosition) { CameraCompassBearingAnimator animator = - (CameraCompassBearingAnimator) animatorMap.get(ANIMATOR_CAMERA_COMPASS_BEARING); + (CameraCompassBearingAnimator) animatorArray.get(ANIMATOR_CAMERA_COMPASS_BEARING); if (animator == null) { return; } @@ -346,7 +343,7 @@ final class LocationAnimatorCoordinator { private void createNewAnimator(@MapboxAnimator.Type int animatorType, MapboxAnimator animator) { cancelAnimator(animatorType); - animatorMap.put(animatorType, animator); + animatorArray.put(animatorType, animator); } void cancelZoomAnimation() { @@ -358,18 +355,19 @@ final class LocationAnimatorCoordinator { } void cancelAllAnimations() { - for (@MapboxAnimator.Type int animatorType : animatorMap.keySet()) { + for (int i = 0; i < animatorArray.size(); i++) { + @MapboxAnimator.Type int animatorType = animatorArray.keyAt(i); cancelAnimator(animatorType); } } private void cancelAnimator(@MapboxAnimator.Type int animatorType) { - MapboxAnimator animator = animatorMap.get(animatorType); + MapboxAnimator animator = animatorArray.get(animatorType); if (animator != null) { animator.cancel(); animator.removeAllUpdateListeners(); animator.removeAllListeners(); - animatorMap.put(animatorType, null); + animatorArray.put(animatorType, null); } } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/MapboxAnimator.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/MapboxAnimator.java index b22601a15c..a72bf08a86 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/MapboxAnimator.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/MapboxAnimator.java @@ -11,7 +11,7 @@ import java.lang.annotation.RetentionPolicy; import java.util.List; /** - * Abstract class for all of the plugin animators. + * Abstract class for all of the location component animators. * * @param <K> Data type that will be animated. * @param <L> Listener of animation updates. |