Android предотвращает двойной щелчок по кнопке

139
задан naXa 8 September 2018 в 16:19
поделиться

3 ответа

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 { ... }
0
ответ дан WindRider 21 September 2019 в 11:47
поделиться

Добавление к ответу Jim код может быть сделан более кратким:

fun View.setOnSingleClick(onClick: () -> Unit) {
    var lastClickTime = 0L
    setOnClickListener {
        if (currentTimeMillis() > lastClickTime + 750) onClick()
        lastClickTime = currentTimeMillis()
    } 
}

Использование:

aView.setOnSingleClick {  }
1
ответ дан 23 November 2019 в 22:12
поделиться

Этот решение быстро и аккуратно.

в основном Вы просто предотвращаете двойное касание от основных стилей в Вашем приложении и реализуете стандарт по щелчку слушатель. Это работает как очарование с касаниями одновременно различных взглядов.

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
...
<item name="android:splitMotionEvents">false</item>
<item name="android:windowEnableSplitTouch">false</item>
</style>

, Если Ваше приложение использует некоторое событие жеста, это не правильный ответ.

0
ответ дан 23 November 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: