Fix zoom gesture accidentally triggering swipe to seek
This commit is contained in:
parent
46f5277571
commit
9e4c160265
1 changed files with 8 additions and 2 deletions
|
@ -2,6 +2,7 @@ package dev.jdtech.jellyfin.utils
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
|
import android.os.SystemClock
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.view.GestureDetector
|
import android.view.GestureDetector
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
|
@ -42,6 +43,8 @@ class PlayerGestureHelper(
|
||||||
private var swipeGestureBrightnessOpen = false
|
private var swipeGestureBrightnessOpen = false
|
||||||
private var swipeGestureProgressOpen = false
|
private var swipeGestureProgressOpen = false
|
||||||
|
|
||||||
|
private var lastScaleEvent: Long = 0
|
||||||
|
|
||||||
private val tapGestureDetector = GestureDetector(playerView.context, object : GestureDetector.SimpleOnGestureListener() {
|
private val tapGestureDetector = GestureDetector(playerView.context, object : GestureDetector.SimpleOnGestureListener() {
|
||||||
override fun onSingleTapConfirmed(e: MotionEvent): Boolean {
|
override fun onSingleTapConfirmed(e: MotionEvent): Boolean {
|
||||||
playerView.apply {
|
playerView.apply {
|
||||||
|
@ -73,7 +76,7 @@ class PlayerGestureHelper(
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDoubleTap(e: MotionEvent): Boolean {
|
override fun onDoubleTap(e: MotionEvent): Boolean {
|
||||||
val viewCenterX = playerView.measuredWidth / 2
|
val viewCenterX = playerView.measuredWidth / 2
|
||||||
val currentPos = playerView.player?.currentPosition ?: 0
|
val currentPos = playerView.player?.currentPosition ?: 0
|
||||||
|
@ -95,7 +98,9 @@ class PlayerGestureHelper(
|
||||||
// Check whether swipe was oriented vertically
|
// Check whether swipe was oriented vertically
|
||||||
if (abs(distanceY / distanceX) < 2) {
|
if (abs(distanceY / distanceX) < 2) {
|
||||||
return if ((abs(currentEvent.x - firstEvent.x) > 50 || swipeGestureProgressOpen) &&
|
return if ((abs(currentEvent.x - firstEvent.x) > 50 || swipeGestureProgressOpen) &&
|
||||||
(!swipeGestureBrightnessOpen && !swipeGestureVolumeOpen)) {
|
!swipeGestureBrightnessOpen &&
|
||||||
|
!swipeGestureVolumeOpen &&
|
||||||
|
(SystemClock.elapsedRealtime() - lastScaleEvent) > 200) {
|
||||||
val currentPos = playerView.player?.currentPosition ?: 0
|
val currentPos = playerView.player?.currentPosition ?: 0
|
||||||
val vidDuration = (playerView.player?.duration ?: 0).coerceAtLeast(0)
|
val vidDuration = (playerView.player?.duration ?: 0).coerceAtLeast(0)
|
||||||
|
|
||||||
|
@ -190,6 +195,7 @@ class PlayerGestureHelper(
|
||||||
override fun onScaleBegin(detector: ScaleGestureDetector): Boolean = true
|
override fun onScaleBegin(detector: ScaleGestureDetector): Boolean = true
|
||||||
|
|
||||||
override fun onScale(detector: ScaleGestureDetector): Boolean {
|
override fun onScale(detector: ScaleGestureDetector): Boolean {
|
||||||
|
lastScaleEvent = SystemClock.elapsedRealtime()
|
||||||
val scaleFactor = detector.scaleFactor
|
val scaleFactor = detector.scaleFactor
|
||||||
if (abs(scaleFactor - Constants.ZOOM_SCALE_BASE) > Constants.ZOOM_SCALE_THRESHOLD) {
|
if (abs(scaleFactor - Constants.ZOOM_SCALE_BASE) > Constants.ZOOM_SCALE_THRESHOLD) {
|
||||||
isZoomEnabled = scaleFactor > 1
|
isZoomEnabled = scaleFactor > 1
|
||||||
|
|
Loading…
Reference in a new issue