From b813dd4e697143f8392dd21faa917276369a3169 Mon Sep 17 00:00:00 2001 From: Tobrun Van Nuland Date: Tue, 17 Jan 2017 16:45:19 +0100 Subject: [android] - revisit fling implementation details for large screensize support --- .../mapbox/mapboxsdk/constants/MapboxConstants.java | 4 ++-- .../com/mapbox/mapboxsdk/maps/MapGestureDetector.java | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java index fbf307541b..828966bf52 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java @@ -50,12 +50,12 @@ public class MapboxConstants { /** * Animation time of a fling gesture */ - public static final long ANIMATION_DURATION_FLING_BASE = ANIMATION_DURATION_SHORT; + public static final long ANIMATION_DURATION_FLING_BASE = 350; /** * Velocity threshold for a fling gesture */ - public static final long VELOCITY_THRESHOLD_IGNORE_FLING = 1000; + public static final long VELOCITY_THRESHOLD_IGNORE_FLING = 700; /** * The currently supported minimum zoom level. diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java index 11dee078ac..af6d601353 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java @@ -5,6 +5,7 @@ import android.graphics.PointF; import android.support.annotation.NonNull; import android.support.v4.view.GestureDetectorCompat; import android.support.v4.view.ScaleGestureDetectorCompat; +import android.util.Log; import android.view.InputDevice; import android.view.MotionEvent; import android.view.ScaleGestureDetector; @@ -18,6 +19,8 @@ import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.telemetry.MapboxEvent; import com.mapbox.mapboxsdk.utils.MathUtils; +import timber.log.Timber; + /** * Manages gestures events on a MapView. *

@@ -304,13 +307,6 @@ final class MapGestureDetector { float screenDensity = uiSettings.getPixelRatio(); - // calculate velocity vector for xy dimensions, independent from screen size - double velocityXY = Math.hypot(velocityX / screenDensity, velocityY / screenDensity); - if (velocityXY < MapboxConstants.VELOCITY_THRESHOLD_IGNORE_FLING) { - // ignore short flings, these can occur when other gestures just have finished executing - return false; - } - trackingSettings.resetTrackingModesIfRequired(true, false); // cancel any animation @@ -322,8 +318,15 @@ final class MapGestureDetector { double offsetX = velocityX / tiltFactor / screenDensity; double offsetY = velocityY / tiltFactor / screenDensity; + // calculate velocity vector for xy dimensions + double velocityXY = Math.hypot(offsetX, offsetY); + if (velocityXY < MapboxConstants.VELOCITY_THRESHOLD_IGNORE_FLING) { + // ignore short flings, these can occur when other gestures just have finished executing + return false; + } + // calculate animation time based on displacement - long animationTime = (long) (velocityXY / 7 / tiltFactor + MapboxConstants.ANIMATION_DURATION_FLING_BASE); + long animationTime = (long) (velocityXY/ 10 / tiltFactor + MapboxConstants.ANIMATION_DURATION_FLING_BASE); // update transformation transform.setGestureInProgress(true); -- cgit v1.2.1