diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com')
6 files changed, 115 insertions, 12 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/BearingCameraTransition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/BearingCameraTransition.java index 2a5bf735fa..d03528c516 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/BearingCameraTransition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/BearingCameraTransition.java @@ -4,7 +4,7 @@ import android.view.animation.Interpolator; public class BearingCameraTransition extends CameraTransition<Double> { - public BearingCameraTransition(int type, double duration, double delay, Double endValue, Interpolator interpolator) { + public BearingCameraTransition(int type, long duration, long delay, Double endValue, Interpolator interpolator) { super(type, duration, delay, endValue, interpolator); } @@ -14,7 +14,19 @@ public class BearingCameraTransition extends CameraTransition<Double> { } @Override - Double getAnimatedValue(double fraction) { + protected Double getAnimatedValue(double fraction) { return getStartValue() + ((getEndValue() - getStartValue()) * fraction); } + + public static class Builder extends CameraTransition.Builder<BearingCameraTransition, Double> { + + public Builder(Double endValue) { + super(endValue); + } + + @Override + public BearingCameraTransition build() { + return new BearingCameraTransition(reason, durationMillis, delayMillis, endValue, interpolator); + } + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraTransition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraTransition.java index 5d1c20dd61..6ec240d115 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraTransition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraTransition.java @@ -3,6 +3,8 @@ package com.mapbox.mapboxsdk.maps; import android.support.v4.view.animation.PathInterpolatorCompat; import android.view.animation.Interpolator; +import com.mapbox.mapboxsdk.constants.MapboxConstants; + import java.util.concurrent.CopyOnWriteArrayList; public abstract class CameraTransition<T> { @@ -46,7 +48,15 @@ public abstract class CameraTransition<T> { private final Interpolator interpolator; - CameraTransition(int reason, double durationMillis, double delayMillis, T endValue, Interpolator interpolator) { + CameraTransition(int reason, long durationMillis, long delayMillis, T endValue, Interpolator interpolator) { + if (endValue == null) { + throw new IllegalArgumentException("end value cannot be null"); + } + + if (interpolator == null) { + throw new IllegalArgumentException("interpolator cannot be null"); + } + this.reason = reason; this.durationMillis = durationMillis; this.durationNanos = durationMillis * 1E6; @@ -193,8 +203,7 @@ public abstract class CameraTransition<T> { abstract int getCameraProperty(); - // todo camera - make protected? - abstract T getAnimatedValue(double fraction); + protected abstract T getAnimatedValue(double fraction); public interface Listener { @@ -204,4 +213,38 @@ public abstract class CameraTransition<T> { void onFinish(CameraTransition transition); } + + public abstract static class Builder<T, K> { + protected int reason = REASON_ANY; + protected long durationMillis = MapboxConstants.ANIMATION_DURATION; + protected long delayMillis = 0; + protected final K endValue; + protected Interpolator interpolator = INTERPOLATOR_EASING; + + public Builder(K endValue) { + this.endValue = endValue; + } + + public Builder<T, K> reason(int reason) { + this.reason = reason; + return this; + } + + public Builder<T, K> duration(long durationMillis) { + this.durationMillis = durationMillis; + return this; + } + + public Builder<T, K> delay(long delayMillis) { + this.delayMillis = delayMillis; + return this; + } + + public Builder<T, K> interpolator(Interpolator interpolator) { + this.interpolator = interpolator; + return this; + } + + public abstract T build(); + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PaddingCameraTransition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PaddingCameraTransition.java index 2e1cc6fdbd..28d3f9f81f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PaddingCameraTransition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PaddingCameraTransition.java @@ -4,7 +4,7 @@ import android.view.animation.Interpolator; public class PaddingCameraTransition extends CameraTransition<Double[]> { - public PaddingCameraTransition(int type, double duration, double delay, Double[] endValue, Interpolator interpolator) { + public PaddingCameraTransition(int type, long duration, long delay, Double[] endValue, Interpolator interpolator) { super(type, duration, delay, endValue, interpolator); } @@ -14,7 +14,7 @@ public class PaddingCameraTransition extends CameraTransition<Double[]> { } @Override - Double[] getAnimatedValue(double fraction) { + protected Double[] getAnimatedValue(double fraction) { Double[] startValue = getStartValue(); Double[] endValue = getEndValue(); @@ -25,4 +25,16 @@ public class PaddingCameraTransition extends CameraTransition<Double[]> { return value; } + + public static class Builder extends CameraTransition.Builder<PaddingCameraTransition, Double[]> { + + public Builder(Double[] endValue) { + super(endValue); + } + + @Override + public PaddingCameraTransition build() { + return new PaddingCameraTransition(reason, durationMillis, delayMillis, endValue, interpolator); + } + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PitchCameraTransition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PitchCameraTransition.java index ee478547bc..5531615521 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PitchCameraTransition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PitchCameraTransition.java @@ -4,7 +4,7 @@ import android.view.animation.Interpolator; public class PitchCameraTransition extends CameraTransition<Double> { - public PitchCameraTransition(int type, double duration, double delay, Double endValue, Interpolator interpolator) { + public PitchCameraTransition(int type, long duration, long delay, Double endValue, Interpolator interpolator) { super(type, duration, delay, endValue, interpolator); } @@ -14,7 +14,19 @@ public class PitchCameraTransition extends CameraTransition<Double> { } @Override - Double getAnimatedValue(double fraction) { + protected Double getAnimatedValue(double fraction) { return getStartValue() + ((getEndValue() - getStartValue()) * fraction); } + + public static class Builder extends CameraTransition.Builder<PitchCameraTransition, Double> { + + public Builder(Double endValue) { + super(endValue); + } + + @Override + public PitchCameraTransition build() { + return new PitchCameraTransition(reason, durationMillis, delayMillis, endValue, interpolator); + } + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TargetCameraTransition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TargetCameraTransition.java index f3fa423308..effed30984 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TargetCameraTransition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TargetCameraTransition.java @@ -18,11 +18,23 @@ public class TargetCameraTransition extends CameraTransition<LatLng> { } @Override - LatLng getAnimatedValue(double fraction) { + protected LatLng getAnimatedValue(double fraction) { latLng.setLatitude(getStartValue().getLatitude() + ((getEndValue().getLatitude() - getStartValue().getLatitude()) * fraction)); latLng.setLongitude(getStartValue().getLongitude() + ((getEndValue().getLongitude() - getStartValue().getLongitude()) * fraction)); return latLng; } + + public static class Builder extends CameraTransition.Builder<TargetCameraTransition, LatLng> { + + public Builder(LatLng endValue) { + super(endValue); + } + + @Override + public TargetCameraTransition build() { + return new TargetCameraTransition(reason, durationMillis, delayMillis, endValue, interpolator); + } + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/ZoomCameraTransition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/ZoomCameraTransition.java index 073aba4deb..1eefd099f6 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/ZoomCameraTransition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/ZoomCameraTransition.java @@ -4,7 +4,7 @@ import android.view.animation.Interpolator; public class ZoomCameraTransition extends CameraTransition<Double> { - public ZoomCameraTransition(int type, double duration, double delay, Double endValue, Interpolator interpolator) { + public ZoomCameraTransition(int type, long duration, long delay, Double endValue, Interpolator interpolator) { super(type, duration, delay, endValue, interpolator); } @@ -14,7 +14,19 @@ public class ZoomCameraTransition extends CameraTransition<Double> { } @Override - Double getAnimatedValue(double fraction) { + protected Double getAnimatedValue(double fraction) { return getStartValue() + ((getEndValue() - getStartValue()) * fraction); } + + public static class Builder extends CameraTransition.Builder<ZoomCameraTransition, Double> { + + public Builder(Double endValue) { + super(endValue); + } + + @Override + public ZoomCameraTransition build() { + return new ZoomCameraTransition(reason, durationMillis, delayMillis, endValue, interpolator); + } + } } |