mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 14:20:30 +05:30
improve double tap behavior
This commit is contained in:
parent
a086cba894
commit
a71cb344a5
@ -7,39 +7,34 @@ import android.view.View
|
|||||||
|
|
||||||
abstract class DoubleTapListener : View.OnClickListener {
|
abstract class DoubleTapListener : View.OnClickListener {
|
||||||
|
|
||||||
|
private val maximumTimeDifference = 300L
|
||||||
|
private val handler = Handler(Looper.getMainLooper())
|
||||||
|
|
||||||
private var isSingleEvent = false
|
private var isSingleEvent = false
|
||||||
private val doubleClickQualificationSpanInMillis: Long
|
private var timeStampLastClick = 0L
|
||||||
private var timestampLastClick: Long
|
private var timeStampLastDoubleClick = 0L
|
||||||
private val handler: Handler
|
|
||||||
private val runnable: Runnable
|
|
||||||
|
|
||||||
override fun onClick(v: View?) {
|
override fun onClick(v: View?) {
|
||||||
if (SystemClock.elapsedRealtime() - timestampLastClick < doubleClickQualificationSpanInMillis) {
|
if (SystemClock.elapsedRealtime() - timeStampLastClick < maximumTimeDifference) {
|
||||||
isSingleEvent = false
|
isSingleEvent = false
|
||||||
handler.removeCallbacks(runnable)
|
handler.removeCallbacks(runnable)
|
||||||
|
timeStampLastDoubleClick = SystemClock.elapsedRealtime()
|
||||||
onDoubleClick()
|
onDoubleClick()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
isSingleEvent = true
|
isSingleEvent = true
|
||||||
handler.postDelayed(runnable, DEFAULT_QUALIFICATION_SPAN)
|
handler.removeCallbacks(runnable)
|
||||||
timestampLastClick = SystemClock.elapsedRealtime()
|
handler.postDelayed(runnable, maximumTimeDifference)
|
||||||
|
timeStampLastClick = SystemClock.elapsedRealtime()
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract fun onDoubleClick()
|
abstract fun onDoubleClick()
|
||||||
abstract fun onSingleClick()
|
abstract fun onSingleClick()
|
||||||
|
|
||||||
companion object {
|
private val runnable = Runnable {
|
||||||
private const val DEFAULT_QUALIFICATION_SPAN: Long = 200
|
if (!isSingleEvent ||
|
||||||
}
|
SystemClock.elapsedRealtime() - timeStampLastDoubleClick < maximumTimeDifference
|
||||||
|
) return@Runnable
|
||||||
init {
|
onSingleClick()
|
||||||
doubleClickQualificationSpanInMillis = DEFAULT_QUALIFICATION_SPAN
|
|
||||||
timestampLastClick = 0
|
|
||||||
handler = Handler(Looper.getMainLooper())
|
|
||||||
runnable = Runnable {
|
|
||||||
if (isSingleEvent) {
|
|
||||||
onSingleClick()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user