LibreTube/app/src/main/java/com/github/libretube/views/CustomExoPlayerView.kt

64 lines
2.0 KiB
Kotlin
Raw Normal View History

2022-07-02 21:53:24 +05:30
package com.github.libretube.views
import android.annotation.SuppressLint
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
2022-07-15 14:57:04 +05:30
import android.view.View
2022-07-01 18:42:00 +05:30
import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
2022-07-27 12:25:44 +05:30
import com.github.libretube.util.DoubleTapListener
2022-07-27 14:47:05 +05:30
import com.github.libretube.util.OnDoubleTapEventListener
2021-12-14 02:58:17 +05:30
import com.google.android.exoplayer2.ui.StyledPlayerView
2022-07-27 12:25:44 +05:30
@SuppressLint("ClickableViewAccessibility")
internal class CustomExoPlayerView(
2022-05-20 03:52:10 +05:30
context: Context,
attributeSet: AttributeSet? = null
2021-12-14 02:58:17 +05:30
) : StyledPlayerView(context, attributeSet) {
2022-07-19 18:29:16 +05:30
val TAG = "CustomExoPlayerView"
2022-07-01 18:42:00 +05:30
val binding: ExoStyledPlayerControlViewBinding = ExoStyledPlayerControlViewBinding.bind(this)
2022-07-27 14:47:05 +05:30
private var doubleTapListener: OnDoubleTapEventListener? = null
2022-07-27 12:25:44 +05:30
2022-07-27 14:47:05 +05:30
// the x-position of where the user clicked
private var xPos = 0F
2022-07-27 12:25:44 +05:30
fun setOnDoubleTapListener(
2022-07-27 14:47:05 +05:30
eventListener: OnDoubleTapEventListener?
2022-07-27 12:25:44 +05:30
) {
doubleTapListener = eventListener
}
private fun toggleController() {
if (isControllerFullyVisible) hideController() else showController()
}
val doubleTouchListener = object : DoubleTapListener() {
override fun onDoubleClick() {
doubleTapListener?.onEvent(xPos)
}
override fun onSingleClick() {
toggleController()
}
}
2022-07-19 18:29:16 +05:30
init {
setControllerVisibilityListener {
// hide the advanced options
2022-07-20 17:19:56 +05:30
binding.toggleOptions.animate().rotation(0F).setDuration(250).start()
2022-07-19 18:29:16 +05:30
binding.advancedOptions.visibility = View.GONE
}
2022-07-27 14:47:05 +05:30
// set the double click listener for rewind/forward
2022-07-27 12:25:44 +05:30
setOnClickListener(doubleTouchListener)
2022-07-19 18:29:16 +05:30
}
override fun onTouchEvent(event: MotionEvent): Boolean {
2022-07-27 14:47:05 +05:30
// save the x position of the touch event
2022-07-27 12:25:44 +05:30
xPos = event.x
2022-07-27 14:47:05 +05:30
// listen for a double touch
2022-07-27 12:25:44 +05:30
doubleTouchListener.onClick(this)
return false
}
2022-05-20 03:52:10 +05:30
}