diff --git a/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/LocationGesturesManager.kt b/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/LocationGesturesManager.kt index 0f4f02ce56b..a9b2a1eb727 100644 --- a/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/LocationGesturesManager.kt +++ b/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/LocationGesturesManager.kt @@ -6,13 +6,14 @@ import com.mapbox.android.gestures.AndroidGesturesManager internal class LocationGesturesManager( context: Context, - private val onUpEventCallback: (AndroidGesturesManager) -> Unit + private val onUpEventCallback: (AndroidGesturesManager) -> Unit, + private val onDownEventCallback: (AndroidGesturesManager) -> Unit, ) : AndroidGesturesManager(context) { override fun onTouchEvent(motionEvent: MotionEvent?): Boolean { if (motionEvent != null) { - val action: Int = motionEvent.actionMasked - if (action == MotionEvent.ACTION_UP) { - onUpEventCallback.invoke(this) + when (motionEvent.actionMasked) { + MotionEvent.ACTION_UP -> onUpEventCallback.invoke(this) + MotionEvent.ACTION_DOWN -> onDownEventCallback.invoke(this) } } return super.onTouchEvent(motionEvent) diff --git a/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/NavigationCameraLifecycleProvider.kt b/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/NavigationCameraLifecycleProvider.kt index dad1becd745..e6e01d7dd89 100644 --- a/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/NavigationCameraLifecycleProvider.kt +++ b/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/NavigationCameraLifecycleProvider.kt @@ -6,6 +6,11 @@ import com.mapbox.android.gestures.AndroidGesturesManager internal object NavigationCameraLifecycleProvider { fun getCustomGesturesManager( context: Context, - onUpEventCallback: (AndroidGesturesManager) -> Unit - ): AndroidGesturesManager = LocationGesturesManager(context, onUpEventCallback) + onUpEventCallback: (AndroidGesturesManager) -> Unit, + onDownEventCallback: (AndroidGesturesManager) -> Unit, + ): AndroidGesturesManager = LocationGesturesManager( + context, + onUpEventCallback, + onDownEventCallback, + ) } diff --git a/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/NavigationScaleGestureHandler.kt b/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/NavigationScaleGestureHandler.kt index ce27c1824e3..9c13a8d017b 100644 --- a/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/NavigationScaleGestureHandler.kt +++ b/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/camera/lifecycle/NavigationScaleGestureHandler.kt @@ -10,7 +10,6 @@ import com.mapbox.maps.plugin.animation.CameraAnimationsLifecycleListener import com.mapbox.maps.plugin.animation.CameraAnimationsPlugin import com.mapbox.maps.plugin.animation.CameraAnimatorType import com.mapbox.maps.plugin.animation.MapAnimationOwnerRegistry -import com.mapbox.maps.plugin.delegates.listeners.OnCameraChangeListener import com.mapbox.maps.plugin.gestures.GesturesPlugin import com.mapbox.maps.plugin.gestures.OnMoveListener import com.mapbox.maps.plugin.gestures.generated.GesturesSettings @@ -167,10 +166,16 @@ class NavigationScaleGestureHandler( */ val customGesturesManager: AndroidGesturesManager = NavigationCameraLifecycleProvider.getCustomGesturesManager( - context - ) { gesturesManager -> - adjustGesturesThresholds(gesturesManager.moveGestureDetector) - } + context, + onUpEventCallback = { gesturesManager: AndroidGesturesManager -> + adjustGesturesThresholds(gesturesManager.moveGestureDetector) + }, + onDownEventCallback = { + puckScreenPosition?.let { + adjustFocalPoint(it) + } + } + ) private var puckScreenPosition: Point? = null @@ -242,15 +247,10 @@ class NavigationScaleGestureHandler( } private val onIndicatorPositionChangedListener = - OnIndicatorPositionChangedListener { - point -> - puckScreenPosition = point.also { adjustFocalPoint(it) } + OnIndicatorPositionChangedListener { point -> + puckScreenPosition = point } - private val onCameraChangedListener = OnCameraChangeListener { - puckScreenPosition?.let { adjustFocalPoint(it) } - } - private val navigationCameraStateChangedObserver = NavigationCameraStateChangedObserver { adjustGesturesThresholds(customGesturesManager.moveGestureDetector) @@ -292,8 +292,6 @@ class NavigationScaleGestureHandler( locationPlugin.addOnIndicatorPositionChangedListener(onIndicatorPositionChangedListener) - mapboxMap.addOnCameraChangeListener(onCameraChangedListener) - navigationCamera.registerNavigationCameraStateChangeObserver( navigationCameraStateChangedObserver ) @@ -317,8 +315,6 @@ class NavigationScaleGestureHandler( locationPlugin.removeOnIndicatorPositionChangedListener(onIndicatorPositionChangedListener) - mapboxMap.removeOnCameraChangeListener(onCameraChangedListener) - navigationCamera.unregisterNavigationCameraStateChangeObserver( navigationCameraStateChangedObserver )