doubletapplayerview: final touch tweaks

This commit is contained in:
Yuriy Liskov
2026-03-02 17:14:00 +02:00
parent bf14383353
commit 95668b8ac2
4 changed files with 13 additions and 4 deletions
@@ -23,6 +23,10 @@ class DoubleTapPlayerAdapter(private val playerView: View): DoubleTapPlayerView
field = value
}
interface OnSingleTap {
fun onSingleTap(event: MotionEvent)
}
init {
gestureDetector = GestureDetectorCompat(playerView.context, gestureListener)
}
@@ -52,7 +56,7 @@ class DoubleTapPlayerAdapter(private val playerView: View): DoubleTapPlayerView
*
* Primarily used for [YouTubeOverlay][com.github.vkay94.dtpv.youtube.YouTubeOverlay]
*/
override fun controller(controller: PlayerDoubleTapListener) = apply { this.controller = controller }
override fun controller(controller: PlayerDoubleTapListener?) = apply { this.controller = controller }
/**
* Returns the current state of double tapping.
@@ -87,6 +91,8 @@ class DoubleTapPlayerAdapter(private val playerView: View): DoubleTapPlayerView
return false
}
fun onSingleTap(singleTap: OnSingleTap?) = apply { gestureListener.onSingleTap = singleTap }
/**
* Gesture Listener for double tapping
*
@@ -106,6 +112,7 @@ class DoubleTapPlayerAdapter(private val playerView: View): DoubleTapPlayerView
var controls: PlayerDoubleTapListener? = null
var isDoubleTapping = false
var doubleTapDelay: Long = 650
var onSingleTap: OnSingleTap? = null
/**
* Resets the timeout to keep in double tap mode.
@@ -153,6 +160,7 @@ class DoubleTapPlayerAdapter(private val playerView: View): DoubleTapPlayerView
// to hide and show on single tap
if (isDoubleTapping) return true
if (DEBUG) Log.d(TAG, "onSingleTapConfirmed: isDoubleTap = false")
onSingleTap?.onSingleTap(e)
return rootView.performClick()
}
@@ -22,7 +22,7 @@ interface DoubleTapPlayerView {
*
* Primarily used for [YouTubeOverlay][com.github.vkay94.dtpv.youtube.YouTubeOverlay]
*/
fun controller(controller: PlayerDoubleTapListener): DoubleTapPlayerView
fun controller(controller: PlayerDoubleTapListener?): DoubleTapPlayerView
/**
* Returns the current state of double tapping.
*/
@@ -68,7 +68,7 @@ open class DoubleTapPlayerViewImpl @JvmOverloads constructor(
*
* Primarily used for [YouTubeOverlay][com.github.vkay94.dtpv.youtube.YouTubeOverlay]
*/
override fun controller(controller: PlayerDoubleTapListener) = apply { this.controller = controller }
override fun controller(controller: PlayerDoubleTapListener?) = apply { this.controller = controller }
/**
* Returns the current state of double tapping.
@@ -253,7 +253,7 @@ public class PlaybackFragment extends SeekModePlaybackFragment implements Playba
}
public void onDispatchTouchEvent(MotionEvent event) {
if (mDoubleTapPlayerAdapter != null) {
if (mDoubleTapPlayerAdapter != null && !isOverlayShown()) {
boolean handled = mDoubleTapPlayerAdapter.onTouchEvent(event);
if (handled)
@@ -546,6 +546,7 @@ public class PlaybackFragment extends SeekModePlaybackFragment implements Playba
}
mDoubleTapPlayerAdapter = new DoubleTapPlayerAdapter(getView());
mDoubleTapPlayerAdapter.onSingleTap(this::applyTickle);
mDoubleTapPlayerAdapter.controller(mYouTubeOverlay);
mYouTubeOverlay
.player(mPlayer)