Предотвращение двойного щелчка по компонентам во всем приложении - PullRequest
0 голосов
/ 07 ноября 2019

Я знаю, как предотвратить двойной щелчок по компоненту. Что я хочу знать, если есть какой-то способ избежать этого поведения «по умолчанию» при добавлении компонента. Должен ли я использовать каждый элемент, который можно щелкнуть в приложении, и написать один и тот же код для каждого компонента?

Я знаю, что мог бы создать подкласс, скажем, класс Button, написать код для предотвращения двойного щелчкатам, и использовать только мой класс Button в приложении. Какой в ​​этом смысл? Почему что-то не так в классе кнопок Android по умолчанию? Я не видел никакого предполагаемого поведения двойного щелчка в ЛЮБОМ приложении. Должен ли я написать подкласс каждого View, который можно щелкнуть, чтобы предотвратить это? Есть ли что-то, чего мне не хватает?

Просто чтобы уточнить, у меня вопрос о чем-то вроде метода disableDoubleClick () или о чем-то подобном. Я уже сказал, что знаю, как это предотвратить, но это немного хлопотно для каждого кликабельного элемента в приложении.

1 Ответ

0 голосов
/ 07 ноября 2019

Вы можете использовать Kotlin с его расширениями в сочетании с реактивными привязками RxJava .

, для общего вида это будет выглядеть примерно так:

fun View.clickWithDebounce(debounceTime: Long = 600L, action: () -> Unit): Disposable =
    RxView.clicks(this)
        .debounce(debounceTime, TimeUnit.MILLISECONDS)
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe { action() }

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

button.clickWithDebounce{
    //do stuff
}

textView.clickWithDebounce{
    //do other stuff
}

imageView.clickWithDebounce{
    //do some completely unrelated with the previous two stuff
}

floatingButton.clickWithDebounce(100000000){
    //do some stuff and wait 100000 seconds before the next click
}

Для получения дополнительной информации: Расширения Kotlin , RxJava RxBinding

Надеюсь, это поможет.

...