LibreTube/app/src/main/java/com/github/libretube/views/CustomExoPlayerView.kt
2022-07-29 08:04:51 +02:00

64 lines
2.0 KiB
Kotlin

package com.github.libretube.views
import android.annotation.SuppressLint
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import android.view.View
import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
import com.github.libretube.util.DoubleTapListener
import com.github.libretube.util.OnDoubleTapEventListener
import com.google.android.exoplayer2.ui.StyledPlayerView
@SuppressLint("ClickableViewAccessibility")
internal class CustomExoPlayerView(
context: Context,
attributeSet: AttributeSet? = null
) : StyledPlayerView(context, attributeSet) {
val TAG = "CustomExoPlayerView"
val binding: ExoStyledPlayerControlViewBinding = ExoStyledPlayerControlViewBinding.bind(this)
private var doubleTapListener: OnDoubleTapEventListener? = null
// the x-position of where the user clicked
private var xPos = 0F
fun setOnDoubleTapListener(
eventListener: OnDoubleTapEventListener?
) {
doubleTapListener = eventListener
}
private fun toggleController() {
if (isControllerFullyVisible) hideController() else showController()
}
val doubleTouchListener = object : DoubleTapListener() {
override fun onDoubleClick() {
doubleTapListener?.onEvent(xPos)
}
override fun onSingleClick() {
toggleController()
}
}
init {
setControllerVisibilityListener {
// hide the advanced options
binding.toggleOptions.animate().rotation(0F).setDuration(250).start()
binding.advancedOptions.visibility = View.GONE
}
// set the double click listener for rewind/forward
setOnClickListener(doubleTouchListener)
}
override fun onTouchEvent(event: MotionEvent): Boolean {
// save the x position of the touch event
xPos = event.x
// listen for a double touch
doubleTouchListener.onClick(this)
return false
}
}