summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-12-13 08:08:29 +0100
committerGitHub <noreply@github.com>2016-12-13 08:08:29 +0100
commitb43aa9d62dabf198c5534af0c71c2c1da232944f (patch)
treecea434ef31eacb7e0ccfd49f79d5846f5f4af4f0 /platform
parent28be37fcbe527c66fbce34158671beaf82f2ca48 (diff)
downloadqtlocation-mapboxgl-b43aa9d62dabf198c5534af0c71c2c1da232944f.tar.gz
[android] - limit input fling gesture based on map tilt. (#7383)
Diffstat (limited to 'platform')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java5
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java15
2 files changed, 12 insertions, 8 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 10d5c55044..ac4b637df3 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
@@ -56,6 +56,11 @@ public class MapboxConstants {
public static final int ANIMATION_DURATION_SHORT = 150;
/**
+ * Animation time of a fling gesture
+ */
+ public static final long ANIMATION_DURATION_FLING = 350;
+
+ /**
* The currently supported minimum zoom level.
*/
public static final float MINIMUM_ZOOM = 0.0f;
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 0df5491535..157a1c4a19 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,7 +5,6 @@ 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;
@@ -17,8 +16,6 @@ import com.almeros.android.multitouch.gesturedetectors.TwoFingerGestureDetector;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
import com.mapbox.mapboxsdk.telemetry.MapboxEvent;
-import timber.log.Timber;
-
/**
* Manages gestures events on a MapView.
* <p>
@@ -298,17 +295,19 @@ final class MapGestureDetector {
trackingSettings.resetTrackingModesIfRequired(true, false);
- double decelerationRate = 1;
-
// Cancel any animation
transform.cancelTransitions();
float screenDensity = uiSettings.getPixelRatio();
- double offsetX = velocityX * decelerationRate / 4 / screenDensity;
- double offsetY = velocityY * decelerationRate / 4 / screenDensity;
+
+ double tilt = transform.getTilt();
+ // tilt results in a bigger translation, need to limit input #5281, limitFactor ranges from 2 -> 8
+ double limitFactor = 2 + ((tilt != 0) ? (tilt / 10) : 0);
+ double offsetX = velocityX / limitFactor / screenDensity;
+ double offsetY = velocityY / limitFactor / screenDensity;
transform.setGestureInProgress(true);
- transform.moveBy(offsetX, offsetY, (long) (decelerationRate * 1000.0f));
+ transform.moveBy(offsetX, offsetY, MapboxConstants.ANIMATION_DURATION_FLING);
transform.setGestureInProgress(false);
if (onFlingListener != null) {