summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Paczos <lukasz.paczos@mapbox.com>2019-09-06 18:07:24 +0200
committerŁukasz Paczos <lukasz.paczos@mapbox.com>2019-09-06 18:07:24 +0200
commiteb64a2bcaa2844b47a9e645452496c783096d363 (patch)
tree74d34c34e37d0a4755226581d2805d6cdf69c95e
parentbadde7868e0ad87496037a9175be62701aac9edc (diff)
downloadqtlocation-mapboxgl-eb64a2bcaa2844b47a9e645452496c783096d363.tar.gz
[android][wip] camera transition builders
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/BearingCameraTransition.java16
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraTransition.java49
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PaddingCameraTransition.java16
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PitchCameraTransition.java16
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TargetCameraTransition.java14
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/ZoomCameraTransition.java16
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);
+ }
+ }
}