summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun Van Nuland <tobrun.van.nuland@gmail.com>2017-01-17 16:45:19 +0100
committerTobrun Van Nuland <tobrun.van.nuland@gmail.com>2017-01-17 16:45:19 +0100
commitb813dd4e697143f8392dd21faa917276369a3169 (patch)
treef0c6536cca6401e49745747ec800764fe994a935
parent7983e3a67c557a0fcf118984404ea1756416b521 (diff)
downloadqtlocation-mapboxgl-upstream/tobrun-revisit-fling-gesture.tar.gz
[android] - revisit fling implementation details for large screensize supportupstream/tobrun-revisit-fling-gesture
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java4
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java19
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.
* <p>
@@ -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);