Enable quick zoom gesture by default.
Quick scaling concept was added to ScaleGestureDetector on API 19.
It's enabled by default and the GestureDetector for detecting
double-tap is initialed only for API 19+. However CameraX doesn't have
this constraint, so it can be enabled by default. This change initials
the gesture detector by default.
Bug: b/309374489
Test: ./gradlew camera:camera-viewfinder:build
Change-Id: Iba7b7bc9fc9c86d204a0096985cfdc239eae401e
diff --git a/camera/camera-viewfinder-core/src/main/java/androidx/camera/viewfinder/core/ZoomGestureDetector.kt b/camera/camera-viewfinder-core/src/main/java/androidx/camera/viewfinder/core/ZoomGestureDetector.kt
index cb1d042..e169164 100644
--- a/camera/camera-viewfinder-core/src/main/java/androidx/camera/viewfinder/core/ZoomGestureDetector.kt
+++ b/camera/camera-viewfinder-core/src/main/java/androidx/camera/viewfinder/core/ZoomGestureDetector.kt
@@ -111,22 +111,6 @@
* If not set, this is enabled by default.
*/
var isQuickZoomEnabled: Boolean = true
- set(enabled) {
- field = enabled
- if (field && gestureDetector == null) {
- val gestureListener: GestureDetector.SimpleOnGestureListener =
- object : GestureDetector.SimpleOnGestureListener() {
- override fun onDoubleTap(e: MotionEvent): Boolean {
- // Double tap: start watching for a swipe
- anchoredZoomStartX = e.x
- anchoredZoomStartY = e.y
- anchoredZoomMode = ANCHORED_ZOOM_MODE_DOUBLE_TAP
- return true
- }
- }
- gestureDetector = GestureDetector(context, gestureListener)
- }
- }
/**
* Whether the stylus zoom gesture, in which the user uses a stylus and presses the button,
@@ -195,7 +179,16 @@
private var anchoredZoomStartX = 0f
private var anchoredZoomStartY = 0f
private var anchoredZoomMode = ANCHORED_ZOOM_MODE_NONE
- private var gestureDetector: GestureDetector? = null
+ private var gestureDetector: GestureDetector =
+ GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
+ override fun onDoubleTap(e: MotionEvent): Boolean {
+ // Double tap: start watching for a swipe
+ anchoredZoomStartX = e.x
+ anchoredZoomStartY = e.y
+ anchoredZoomMode = ANCHORED_ZOOM_MODE_DOUBLE_TAP
+ return true
+ }
+ })
private var eventBeforeOrAboveStartingGestureEvent = false
/**
@@ -218,7 +211,7 @@
// Forward the event to check for double tap gesture
if (isQuickZoomEnabled) {
- gestureDetector!!.onTouchEvent(event)
+ gestureDetector.onTouchEvent(event)
}
val count = event.pointerCount