diff options
author | Tobrun Van Nuland <tobrun.van.nuland@gmail.com> | 2017-08-23 11:19:51 +0200 |
---|---|---|
committer | Tobrun Van Nuland <tobrun.van.nuland@gmail.com> | 2017-08-23 11:19:51 +0200 |
commit | e612a646d68ab732fd3a85fda358cb4d830ebb20 (patch) | |
tree | 16d458bcf91925705c182dc0da6b850c7d5a7307 | |
parent | d2160b81a59821ea025f299fbbaf79454e8d387b (diff) | |
download | qtlocation-mapboxgl-upstream/tvn-android-animations.tar.gz |
wip platform animationsupstream/tvn-android-animations
3 files changed, 60 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index cfe042d1f9..fb64118241 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -1015,4 +1015,8 @@ public class MapView extends FrameLayout { onMapReadyCallbackList.add(callback); } } + + public NativeCameraPosition getCameraPosition(){ + return new NativeCameraPosition(nativeMapView); + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeCameraPosition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeCameraPosition.java new file mode 100644 index 0000000000..599183356e --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeCameraPosition.java @@ -0,0 +1,18 @@ +package com.mapbox.mapboxsdk.maps; + +public class NativeCameraPosition { + + private NativeMapView nativeMapView; + + public NativeCameraPosition(NativeMapView nativeMapView) { + this.nativeMapView = nativeMapView; + } + + public void setTilt(double tilt) { + nativeMapView.setPitch(tilt, 0); + } + + public void setBearing(double bearing) { + nativeMapView.setBearing(bearing); + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/PlatformAnimationActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/PlatformAnimationActivity.java index 7a3b38ff5b..a695c07db9 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/PlatformAnimationActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/PlatformAnimationActivity.java @@ -1,10 +1,17 @@ package com.mapbox.mapboxsdk.testapp.activity.camera; +import android.animation.AnimatorSet; +import android.animation.ValueAnimator; import android.os.Bundle; +import android.renderscript.Sampler; +import android.support.v4.view.animation.FastOutLinearInInterpolator; +import android.support.v4.view.animation.FastOutSlowInInterpolator; import android.support.v7.app.AppCompatActivity; +import android.view.animation.AccelerateDecelerateInterpolator; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; +import com.mapbox.mapboxsdk.maps.NativeCameraPosition; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; @@ -28,6 +35,37 @@ public class PlatformAnimationActivity extends AppCompatActivity implements OnMa @Override public void onMapReady(MapboxMap map) { mapboxMap = map; + + final NativeCameraPosition cameraPosition = mapView.getCameraPosition(); + + // Animate tilt + ValueAnimator tiltAnimator = ValueAnimator.ofFloat(0f, 60.0f); + tiltAnimator.setStartDelay(1000); + tiltAnimator.setDuration(4000); + tiltAnimator.setInterpolator(new FastOutSlowInInterpolator()); + tiltAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + public void onAnimationUpdate(ValueAnimator animation) { + cameraPosition.setTilt(((Float) animation.getAnimatedValue()).doubleValue()); + } + }); + + // Animate bearing + ValueAnimator bearingAnimator = ValueAnimator.ofFloat(0.0f, 160.0f); + bearingAnimator.setDuration(6000); + bearingAnimator.setInterpolator(new FastOutLinearInInterpolator()); + bearingAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + cameraPosition.setBearing(((Float)animation.getAnimatedValue()).doubleValue()); + } + }); + + // Combine animations and start + AnimatorSet animatorSet = new AnimatorSet(); + animatorSet.setStartDelay(1500); + animatorSet.play(tiltAnimator); + animatorSet.play(bearingAnimator); + animatorSet.start(); } @Override |