summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraTransition.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraTransition.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraTransition.java49
1 files changed, 46 insertions, 3 deletions
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();
+ }
}