diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-01-24 17:18:00 +0100 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2019-01-25 15:07:22 +0100 |
commit | be94efa4024271cf6307baaa1e3317c3ec055b3b (patch) | |
tree | 7bfbd5929290e91bc7ecb177ccdd7d7d6103ffd2 | |
parent | 8fedfbf160ab7228c5a51d1f6d4586b1ea54bac3 (diff) | |
download | qtlocation-mapboxgl-be94efa4024271cf6307baaa1e3317c3ec055b3b.tar.gz |
[android] separate quick zoom gestures option
7 files changed, 182 insertions, 66 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 2c063daa8f..73c8201454 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 @@ -130,6 +130,7 @@ public class MapboxConstants { public static final String STATE_ROTATE_ENABLED = "mapbox_rotateEnabled"; public static final String STATE_TILT_ENABLED = "mapbox_tiltEnabled"; public static final String STATE_DOUBLE_TAP_ENABLED = "mapbox_doubleTapEnabled"; + public static final String STATE_QUICK_ZOOM_ENABLED = "mapbox_quickZoom"; public static final String STATE_DEBUG_ACTIVE = "mapbox_debugActive"; public static final String STATE_COMPASS_ENABLED = "mapbox_compassEnabled"; public static final String STATE_COMPASS_GRAVITY = "mapbox_compassGravity"; @@ -158,5 +159,4 @@ public class MapboxConstants { public static final String STATE_FLING_ANIMATION_ENABLED = "mapbox_flingAnimationEnabled"; public static final String STATE_INCREASE_ROTATE_THRESHOLD = "mapbox_increaseRotateThreshold"; public static final String STATE_INCREASE_SCALE_THRESHOLD = "mapbox_increaseScaleThreshold"; - } 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( diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java index 8c91ad9174..91895e64ad 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java @@ -64,6 +64,7 @@ public class MapboxMapOptions implements Parcelable { private boolean tiltGesturesEnabled = true; private boolean zoomGesturesEnabled = true; private boolean doubleTapGesturesEnabled = true; + private boolean quickZoomGesturesEnabled = true; private boolean prefetchesTiles = true; private boolean zMediaOverlay = false; @@ -118,6 +119,7 @@ public class MapboxMapOptions implements Parcelable { tiltGesturesEnabled = in.readByte() != 0; zoomGesturesEnabled = in.readByte() != 0; doubleTapGesturesEnabled = in.readByte() != 0; + quickZoomGesturesEnabled = in.readByte() != 0; apiBaseUrl = in.readString(); textureMode = in.readByte() != 0; @@ -506,6 +508,18 @@ public class MapboxMapOptions implements Parcelable { } /** + * Specifies whether the user may zoom the map by tapping twice, holding and moving the pointer up and down. + * + * @param enabled True and gesture will be enabled + * @return This + */ + @NonNull + public MapboxMapOptions quickZoomGesturesEnabled(boolean enabled) { + quickZoomGesturesEnabled = enabled; + return this; + } + + /** * Enable {@link android.view.TextureView} as rendered surface. * <p> * Since the 5.2.0 release we replaced our TextureView with an {@link android.opengl.GLSurfaceView} @@ -791,6 +805,15 @@ public class MapboxMapOptions implements Parcelable { } /** + * Get whether the user may zoom the map by tapping twice, holding and moving the pointer up and down. + * + * @return True indicates gesture is enabled + */ + public boolean getQuickZoomGesturesEnabled() { + return quickZoomGesturesEnabled; + } + + /** * Get the current configured visibility state for attribution for a map view. * * @return Visibility state of the attribution @@ -922,6 +945,7 @@ public class MapboxMapOptions implements Parcelable { dest.writeByte((byte) (tiltGesturesEnabled ? 1 : 0)); dest.writeByte((byte) (zoomGesturesEnabled ? 1 : 0)); dest.writeByte((byte) (doubleTapGesturesEnabled ? 1 : 0)); + dest.writeByte((byte) (quickZoomGesturesEnabled ? 1 : 0)); dest.writeString(apiBaseUrl); dest.writeByte((byte) (textureMode ? 1 : 0)); @@ -998,6 +1022,9 @@ public class MapboxMapOptions implements Parcelable { if (doubleTapGesturesEnabled != options.doubleTapGesturesEnabled) { return false; } + if (quickZoomGesturesEnabled != options.quickZoomGesturesEnabled) { + return false; + } if (cameraPosition != null ? !cameraPosition.equals(options.cameraPosition) : options.cameraPosition != null) { return false; } @@ -1061,6 +1088,7 @@ public class MapboxMapOptions implements Parcelable { result = 31 * result + (tiltGesturesEnabled ? 1 : 0); result = 31 * result + (zoomGesturesEnabled ? 1 : 0); result = 31 * result + (doubleTapGesturesEnabled ? 1 : 0); + result = 31 * result + (quickZoomGesturesEnabled ? 1 : 0); result = 31 * result + (apiBaseUrl != null ? apiBaseUrl.hashCode() : 0); result = 31 * result + (textureMode ? 1 : 0); result = 31 * result + (translucentTextureSurface ? 1 : 0); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java index ab29b026f1..3e24b8c797 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java @@ -58,6 +58,8 @@ public final class UiSettings { private boolean doubleTapGesturesEnabled = true; + private boolean quickZoomGesturesEnabled = true; + private boolean scaleVelocityAnimationEnabled = true; private boolean rotateVelocityAnimationEnabled = true; private boolean flingVelocityAnimationEnabled = true; @@ -113,6 +115,7 @@ public final class UiSettings { setRotateGesturesEnabled(options.getRotateGesturesEnabled()); setTiltGesturesEnabled(options.getTiltGesturesEnabled()); setDoubleTapGesturesEnabled(options.getDoubleTapGesturesEnabled()); + setQuickZoomGesturesEnabled(options.getQuickZoomGesturesEnabled()); } private void saveGestures(Bundle outState) { @@ -126,6 +129,7 @@ public final class UiSettings { outState.putBoolean(MapboxConstants.STATE_FLING_ANIMATION_ENABLED, isFlingVelocityAnimationEnabled()); outState.putBoolean(MapboxConstants.STATE_INCREASE_ROTATE_THRESHOLD, isIncreaseRotateThresholdWhenScaling()); outState.putBoolean(MapboxConstants.STATE_INCREASE_SCALE_THRESHOLD, isIncreaseScaleThresholdWhenRotating()); + outState.putBoolean(MapboxConstants.STATE_QUICK_ZOOM_ENABLED, isQuickZoomGesturesEnabled()); } private void restoreGestures(Bundle savedInstanceState) { @@ -141,6 +145,7 @@ public final class UiSettings { savedInstanceState.getBoolean(MapboxConstants.STATE_INCREASE_ROTATE_THRESHOLD)); setIncreaseScaleThresholdWhenRotating( savedInstanceState.getBoolean(MapboxConstants.STATE_INCREASE_SCALE_THRESHOLD)); + setQuickZoomGesturesEnabled(savedInstanceState.getBoolean(MapboxConstants.STATE_QUICK_ZOOM_ENABLED)); } private void initialiseCompass(MapboxMapOptions options, @NonNull Resources resources) { @@ -730,6 +735,29 @@ public final class UiSettings { return doubleTapGesturesEnabled; } + /** + * Returns whether the user may zoom the map by tapping twice, holding and moving the pointer up and down. + * + * @return If true, zooming by tapping twice and holding is enabled. + */ + public boolean isQuickZoomGesturesEnabled() { + return quickZoomGesturesEnabled; + } + + /** + * Changes whether the user may zoom the map by tapping twice, holding and moving the pointer up and down. + * <p> + * This setting controls only user interactions with the map. If you set the value to false, + * you may still change the map location programmatically. + * </p> + * The default value is true. + * + * @param quickZoomGesturesEnabled If true, zooming by tapping twice and holding is enabled. + */ + public void setQuickZoomGesturesEnabled(boolean quickZoomGesturesEnabled) { + this.quickZoomGesturesEnabled = quickZoomGesturesEnabled; + } + private void restoreDeselectMarkersOnTap(Bundle savedInstanceState) { setDeselectMarkersOnTap(savedInstanceState.getBoolean(MapboxConstants.STATE_DESELECT_MARKER_ON_TAP)); } @@ -899,6 +927,8 @@ public final class UiSettings { * @see #setScrollGesturesEnabled(boolean) * @see #setRotateGesturesEnabled(boolean) * @see #setTiltGesturesEnabled(boolean) + * @see #setDoubleTapGesturesEnabled(boolean) + * @see #setQuickZoomGesturesEnabled(boolean) */ public void setAllGesturesEnabled(boolean enabled) { setScrollGesturesEnabled(enabled); @@ -906,6 +936,7 @@ public final class UiSettings { setTiltGesturesEnabled(enabled); setZoomGesturesEnabled(enabled); setDoubleTapGesturesEnabled(enabled); + setQuickZoomGesturesEnabled(enabled); } private void saveFocalPoint(Bundle outState) { diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java index 0f4e4dfd36..b53c4692d9 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java @@ -249,6 +249,26 @@ public class UiSettingsTest { } @Test + public void testQuickZoomGesturesEnabled() { + uiSettings.setQuickZoomGesturesEnabled(true); + assertEquals("QuickZoom gesture should be enabled", true, uiSettings.isQuickZoomGesturesEnabled()); + } + + @Test + public void testQuickZoomGesturesDisabled() { + uiSettings.setQuickZoomGesturesEnabled(false); + assertEquals("QuickZoom gesture should be disabled", false, uiSettings.isQuickZoomGesturesEnabled()); + } + + @Test + public void testQuickZoomGestureChangeAllowed() { + uiSettings.setQuickZoomGesturesEnabled(false); + assertEquals("QuickZoom gesture should be false", false, uiSettings.isQuickZoomGesturesEnabled()); + uiSettings.setQuickZoomGesturesEnabled(true); + assertEquals("QuickZoom gesture should be true", true, uiSettings.isQuickZoomGesturesEnabled()); + } + + @Test public void testScrollGesturesEnabled() { uiSettings.setScrollGesturesEnabled(true); assertEquals("Scroll gesture should be enabled", true, uiSettings.isScrollGesturesEnabled()); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/GestureDetectorActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/GestureDetectorActivity.java index 7fffa2a3a6..88e8996ccd 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/GestureDetectorActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/GestureDetectorActivity.java @@ -30,8 +30,8 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.maps.Style; +import com.mapbox.mapboxsdk.maps.UiSettings; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.utils.FontCache; import com.mapbox.mapboxsdk.testapp.utils.ResourceUtils; @@ -66,18 +66,15 @@ public class GestureDetectorActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gesture_detector); - mapView = (MapView) findViewById(R.id.mapView); + mapView = findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - GestureDetectorActivity.this.mapboxMap = mapboxMap; - mapboxMap.setStyle(Style.MAPBOX_STREETS); - initializeMap(); - } + mapView.getMapAsync(mapboxMap -> { + GestureDetectorActivity.this.mapboxMap = mapboxMap; + mapboxMap.setStyle(Style.MAPBOX_STREETS); + initializeMap(); }); - recyclerView = (RecyclerView) findViewById(R.id.alerts_recycler); + recyclerView = findViewById(R.id.alerts_recycler); recyclerView.setLayoutManager(new LinearLayoutManager(this)); gestureAlertsAdapter = new GestureAlertsAdapter(); @@ -127,6 +124,11 @@ public class GestureDetectorActivity extends AppCompatActivity { mapView.onSaveInstanceState(outState); } + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + } + private void initializeMap() { gesturesManager = mapboxMap.getGesturesManager(); @@ -136,47 +138,50 @@ public class GestureDetectorActivity extends AppCompatActivity { recyclerView.setLayoutParams(layoutParams); attachListeners(); + + focusOnAPoint(mapboxMap.getUiSettings().getFocalPoint() != null); } public void attachListeners() { mapboxMap.addOnMoveListener(new MapboxMap.OnMoveListener() { @Override - public void onMoveBegin(MoveGestureDetector detector) { + public void onMoveBegin(@NonNull MoveGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_START, "MOVE START")); } @Override - public void onMove(MoveGestureDetector detector) { + public void onMove(@NonNull MoveGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_PROGRESS, "MOVE PROGRESS")); } @Override - public void onMoveEnd(MoveGestureDetector detector) { + public void onMoveEnd(@NonNull MoveGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_END, "MOVE END")); + recalculateFocalPoint(); } }); mapboxMap.addOnRotateListener(new MapboxMap.OnRotateListener() { @Override - public void onRotateBegin(RotateGestureDetector detector) { + public void onRotateBegin(@NonNull RotateGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_START, "ROTATE START")); } @Override - public void onRotate(RotateGestureDetector detector) { + public void onRotate(@NonNull RotateGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_PROGRESS, "ROTATE PROGRESS")); recalculateFocalPoint(); } @Override - public void onRotateEnd(RotateGestureDetector detector) { + public void onRotateEnd(@NonNull RotateGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_END, "ROTATE END")); } }); mapboxMap.addOnScaleListener(new MapboxMap.OnScaleListener() { @Override - public void onScaleBegin(StandardScaleGestureDetector detector) { + public void onScaleBegin(@NonNull StandardScaleGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_START, "SCALE START")); if (focalPointLatLng != null) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_OTHER, "INCREASING MOVE THRESHOLD")); @@ -190,12 +195,12 @@ public class GestureDetectorActivity extends AppCompatActivity { } @Override - public void onScale(StandardScaleGestureDetector detector) { + public void onScale(@NonNull StandardScaleGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_PROGRESS, "SCALE PROGRESS")); } @Override - public void onScaleEnd(StandardScaleGestureDetector detector) { + public void onScaleEnd(@NonNull StandardScaleGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_END, "SCALE END")); if (focalPointLatLng != null) { @@ -207,17 +212,17 @@ public class GestureDetectorActivity extends AppCompatActivity { mapboxMap.addOnShoveListener(new MapboxMap.OnShoveListener() { @Override - public void onShoveBegin(ShoveGestureDetector detector) { + public void onShoveBegin(@NonNull ShoveGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_START, "SHOVE START")); } @Override - public void onShove(ShoveGestureDetector detector) { + public void onShove(@NonNull ShoveGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_PROGRESS, "SHOVE PROGRESS")); } @Override - public void onShoveEnd(ShoveGestureDetector detector) { + public void onShoveEnd(@NonNull ShoveGestureDetector detector) { gestureAlertsAdapter.addAlert(new GestureAlert(GestureAlert.TYPE_END, "SHOVE END")); } }); @@ -231,31 +236,50 @@ public class GestureDetectorActivity extends AppCompatActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { - resetModes(); + UiSettings uiSettings = mapboxMap.getUiSettings(); switch (item.getItemId()) { - case R.id.menu_gesture_none: - return true; case R.id.menu_gesture_focus_point: - focalPointLatLng = new LatLng(51.50325, -0.12968); - marker = mapboxMap.addMarker(new MarkerOptions().position(focalPointLatLng)); - mapboxMap.easeCamera(CameraUpdateFactory.newLatLngZoom(focalPointLatLng, 16)); - mapboxMap.getUiSettings().setFocalPoint(mapboxMap.getProjection().toScreenLocation(focalPointLatLng)); + focusOnAPoint(focalPointLatLng == null); return true; case R.id.menu_gesture_animation: - mapboxMap.getUiSettings().setAllVelocityAnimationsEnabled(false); + uiSettings.setScaleVelocityAnimationEnabled(!uiSettings.isScaleVelocityAnimationEnabled()); + uiSettings.setRotateVelocityAnimationEnabled(!uiSettings.isRotateGesturesEnabled()); + uiSettings.setFlingVelocityAnimationEnabled(!uiSettings.isFlingVelocityAnimationEnabled()); + return true; + case R.id.menu_gesture_rotate: + uiSettings.setRotateGesturesEnabled(!uiSettings.isRotateGesturesEnabled()); + return true; + case R.id.menu_gesture_tilt: + uiSettings.setTiltGesturesEnabled(!uiSettings.isTiltGesturesEnabled()); + return true; + case R.id.menu_gesture_zoom: + uiSettings.setZoomGesturesEnabled(!uiSettings.isZoomGesturesEnabled()); + return true; + case R.id.menu_gesture_scroll: + uiSettings.setScrollGesturesEnabled(!uiSettings.isScrollGesturesEnabled()); + return true; + case R.id.menu_gesture_double_tap: + uiSettings.setDoubleTapGesturesEnabled(!uiSettings.isDoubleTapGesturesEnabled()); + return true; + case R.id.menu_gesture_quick_zoom: + uiSettings.setQuickZoomGesturesEnabled(!uiSettings.isQuickZoomGesturesEnabled()); + return true; } return super.onOptionsItemSelected(item); } - private void resetModes() { - focalPointLatLng = null; - mapboxMap.getUiSettings().setFocalPoint(null); - gesturesManager.getMoveGestureDetector().setMoveThreshold(0f); - mapboxMap.getUiSettings().setAllVelocityAnimationsEnabled(true); - - if (marker != null) { - mapboxMap.removeMarker(marker); - marker = null; + private void focusOnAPoint(boolean focus) { + if (focus) { + focalPointLatLng = new LatLng(51.50325, -0.12968); + marker = mapboxMap.addMarker(new MarkerOptions().position(focalPointLatLng)); + mapboxMap.easeCamera(CameraUpdateFactory.newLatLngZoom(focalPointLatLng, 16)); + } else { + if (marker != null) { + mapboxMap.removeMarker(marker); + marker = null; + } + focalPointLatLng = null; + mapboxMap.getUiSettings().setFocalPoint(null); } } @@ -283,20 +307,21 @@ public class GestureDetectorActivity extends AppCompatActivity { ViewHolder(View view) { super(view); Typeface typeface = FontCache.get("Roboto-Regular.ttf", view.getContext()); - alertMessageTv = (TextView) view.findViewById(R.id.alert_message); + alertMessageTv = view.findViewById(R.id.alert_message); alertMessageTv.setTypeface(typeface); } } + @NonNull @Override - public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_gesture_alert, parent, false); return new ViewHolder(view); } @Override - public void onBindViewHolder(ViewHolder holder, int position) { + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { GestureAlert alert = alerts.get(position); holder.alertMessageTv.setText(alert.getMessage()); holder.alertMessageTv.setTextColor( diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_gestures.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_gestures.xml index 8b3a540ffa..12f3b0576e 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_gestures.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_gestures.xml @@ -1,12 +1,27 @@ <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item - android:id="@+id/menu_gesture_none" - android:title="None" /> - <item android:id="@+id/menu_gesture_focus_point" - android:title="Focus on a point" /> + android:title="Toggle focus on a point" /> <item android:id="@+id/menu_gesture_animation" - android:title="Turn off velocity animations" /> + android:title="Toggle velocity animations" /> + <item + android:id="@+id/menu_gesture_rotate" + android:title="Toggle rotate enabled" /> + <item + android:id="@+id/menu_gesture_tilt" + android:title="Toggle tilt enabled" /> + <item + android:id="@+id/menu_gesture_zoom" + android:title="Toggle zoom enabled" /> + <item + android:id="@+id/menu_gesture_scroll" + android:title="Toggle scroll enabled" /> + <item + android:id="@+id/menu_gesture_double_tap" + android:title="Toggle double tap enabled" /> + <item + android:id="@+id/menu_gesture_quick_zoom" + android:title="Toggle quick zoom enabled" /> </menu>
\ No newline at end of file |