summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2016-06-10 13:31:57 +0200
committerTobrun <tobrun.van.nuland@gmail.com>2016-06-17 16:06:37 +0200
commitfa0e3df981a6b6cbe9ae64564f3985a6fe34f5c7 (patch)
tree0314351b0c35141a1aecd0fa78401dbf7741b4df /platform
parent27da49c5fb72dd4e3f2c7237c3e4f73fe56c73a2 (diff)
downloadqtlocation-mapboxgl-fa0e3df981a6b6cbe9ae64564f3985a6fe34f5c7.tar.gz
[android] #5299 - Simplify animation code a bit. Make duration dependent on distance. Use non-linear interpolator.
Diffstat (limited to 'platform')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java43
1 files changed, 14 insertions, 29 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java
index 8a8a2a558e..2842188723 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java
@@ -1,6 +1,8 @@
package com.mapbox.mapboxsdk.testapp.activity.annotation;
import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ObjectAnimator;
import android.animation.TypeEvaluator;
import android.os.Bundle;
import android.support.annotation.NonNull;
@@ -10,7 +12,7 @@ import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
-import android.view.animation.LinearInterpolator;
+import android.view.animation.AccelerateDecelerateInterpolator;
import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.annotations.IconFactory;
@@ -116,24 +118,13 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
}
private void animateMarker(final Marker marker, LatLng from, LatLng to) {
- ValueAnimator markerAnimator = ValueAnimator.ofObject(new LatLngEvaluator(), (Object[]) new LatLng[]{from, to});
- markerAnimator.setDuration(5000);
- markerAnimator.setInterpolator(new LinearInterpolator());
- markerAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- if (marker != null) {
- marker.setPosition((LatLng) animation.getAnimatedValue());
- }
- }
- });
+ final ValueAnimator markerAnimator = ObjectAnimator.ofObject(marker, "position", new LatLngEvaluator(), from, to);
+ markerAnimator.setDuration((long) (10 * from.distanceTo(to)));
+ markerAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
- markerAnimator.addListener(new Animator.AnimatorListener() {
- @Override
- public void onAnimationStart(Animator animation) {
- // Nothing
- }
+ //Add listener to restart animation on end
+ markerAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
@@ -143,15 +134,6 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
animateMarker(carMarker, carMarker.getPosition(), passengerMarker.getPosition());
}
- @Override
- public void onAnimationCancel(Animator animation) {
- // Nothing
- }
-
- @Override
- public void onAnimationRepeat(Animator animation) {
- // Nothing
- }
});
// Start
@@ -205,14 +187,17 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
mMapView.onLowMemory();
}
- private class LatLngEvaluator implements TypeEvaluator<LatLng> {
+ /**
+ * Evaluator for LatLng pairs
+ */
+ private static class LatLngEvaluator implements TypeEvaluator<LatLng> {
private LatLng mLatLng = new LatLng();
@Override
public LatLng evaluate(float fraction, LatLng startValue, LatLng endValue) {
- mLatLng.setLatitude(startValue.getLatitude() + (endValue.getLatitude() - startValue.getLatitude()) * fraction);
- mLatLng.setLongitude(startValue.getLongitude() + (endValue.getLongitude() - startValue.getLongitude()) * fraction);
+ mLatLng.setLatitude(startValue.getLatitude() + ((endValue.getLatitude() - startValue.getLatitude()) * fraction));
+ mLatLng.setLongitude(startValue.getLongitude() + ((endValue.getLongitude() - startValue.getLongitude()) * fraction));
return mLatLng;
}
}