K, САМЫЙ МИНИМИЗИРОВАННЫЙ Kotlin идиоматический путь:
class OnSingleClickListener(private val block: () -> Unit) : View.OnClickListener {
private var lastClickTime = 0L
override fun onClick(view: View) {
if (SystemClock.elapsedRealtime() - lastClickTime < 1000) {
return
}
lastClickTime = SystemClock.elapsedRealtime()
block()
}
}
fun View.setOnSingleClickListener(block: () -> Unit) {
setOnClickListener(OnSingleClickListener(block))
}
Использование:
button.setOnSingleClickListener { ... }
Добавление к ответу Jim код может быть сделан более кратким:
fun View.setOnSingleClick(onClick: () -> Unit) {
var lastClickTime = 0L
setOnClickListener {
if (currentTimeMillis() > lastClickTime + 750) onClick()
lastClickTime = currentTimeMillis()
}
}
Использование:
aView.setOnSingleClick { }
Этот решение быстро и аккуратно.
в основном Вы просто предотвращаете двойное касание от основных стилей в Вашем приложении и реализуете стандарт по щелчку слушатель. Это работает как очарование с касаниями одновременно различных взглядов.
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
...
<item name="android:splitMotionEvents">false</item>
<item name="android:windowEnableSplitTouch">false</item>
</style>
, Если Ваше приложение использует некоторое событие жеста, это не правильный ответ.