Android防止双击一个按钮
什么是防止双击Android中的按钮的最佳方法?
你可以用Kotlin扩展函数和RxBinding非常花哨的方式来做到这一点
fun View.clickWithDebounce(debounceTime: Long = 600L, action: () -> Unit): Disposable = RxView.clicks(this) .debounce(debounceTime, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe { action() }
要么
fun View.clickWithDebounce(debounceTime: Long = 600L, action: () -> Unit) { this.setOnClickListener(object : View.OnClickListener { private var lastClickTime: Long = 0 override fun onClick(v: View) { if (SystemClock.elapsedRealtime() - lastClickTime < debounceTime) return else action() lastClickTime = SystemClock.elapsedRealtime() } }) }
然后只是:
View.clickWithDebounce{ Your code }
你可以使用这个方法。 通过使用后期延迟,您可以照顾双击事件。
void debounceEffectForClick(View view){
view.setClickable(false); view.postDelayed(new Runnable() { @Override public void run() { view.setClickable(true); } }, 500); }
更优选的解决方案是,
onclick(){ btn.setEnabled(false); btn.setClickable(false); //yourwork myWork(); } myWork(){ //your tasks. btn.setEnabled(true); btn.setClickable(true); }
作为一个链接可以轻松忽略,我不得不一再重复这一点