diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java | 33 |
1 files changed, 15 insertions, 18 deletions
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 852b3e8a4d..cf2d20179f 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 @@ -77,7 +77,6 @@ final class MapGestureDetector { private PointF focalPoint; private AndroidGesturesManager gesturesManager; - private boolean executeDoubleTap; private Animator scaleAnimator; private Animator rotateAnimator; @@ -208,13 +207,14 @@ final class MapGestureDetector { return false; } + if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) { + cancelAnimators(); + transform.setGestureInProgress(true); + } + boolean result = gesturesManager.onTouchEvent(motionEvent); switch (motionEvent.getActionMasked()) { - case MotionEvent.ACTION_DOWN: - cancelAnimators(); - transform.setGestureInProgress(true); - break; case MotionEvent.ACTION_UP: transform.setGestureInProgress(false); @@ -257,7 +257,7 @@ final class MapGestureDetector { * Posted on main thread with {@link #animationsTimeoutHandler}. Cancels all scheduled animators if needed. */ @NonNull - private Runnable cancelAnimatorsRunnable = new Runnable() { + private final Runnable cancelAnimatorsRunnable = new Runnable() { @Override public void run() { cancelAnimators(); @@ -353,16 +353,10 @@ final class MapGestureDetector { public boolean onDoubleTapEvent(MotionEvent motionEvent) { int action = motionEvent.getActionMasked(); if (action == MotionEvent.ACTION_DOWN) { - executeDoubleTap = true; - } - if (motionEvent.getActionMasked() == MotionEvent.ACTION_UP) { - if (!uiSettings.isZoomGesturesEnabled() || !uiSettings.isDoubleTapGesturesEnabled() || !executeDoubleTap) { + if (!uiSettings.isZoomGesturesEnabled() || !uiSettings.isDoubleTapGesturesEnabled()) { return false; } - transform.cancelTransitions(); - cameraChangeDispatcher.onCameraMoveStarted(REASON_API_GESTURE); - PointF zoomFocalPoint; // Single finger double tap if (focalPoint != null) { @@ -374,11 +368,13 @@ final class MapGestureDetector { } zoomInAnimated(zoomFocalPoint, false); + } + if (motionEvent.getActionMasked() == MotionEvent.ACTION_UP) { sendTelemetryEvent(TelemetryConstants.DOUBLE_TAP, new PointF(motionEvent.getX(), motionEvent.getY())); - return true; } + return super.onDoubleTapEvent(motionEvent); } @@ -482,15 +478,16 @@ final class MapGestureDetector { return false; } - cancelTransitionsIfRequired(); - quickZoom = detector.getPointersCount() == 1; if (quickZoom) { - // when quickzoom, dismiss double tap and disable move gesture - executeDoubleTap = false; + if (!uiSettings.isQuickZoomGesturesEnabled()) { + return false; + } gesturesManager.getMoveGestureDetector().setEnabled(false); } + cancelTransitionsIfRequired(); + if (uiSettings.isIncreaseRotateThresholdWhenScaling()) { // increase rotate angle threshold when scale is detected first gesturesManager.getRotateGestureDetector().setAngleThreshold( |