这个在项目中用得非常多,因为那些测试人员非常喜欢在测试的时候多次点击同一个按钮看看有没有什么bug
所以写点击事件的时候尽量都用这个
abstract class NoDoubleClickListener : View.OnClickListener {
companion object {
const val MIN_CLICK_DELAY_TIME = 800 //两个点击最小间隔
}
var lastClickTime: Long = 0
override fun onClick(v: View?) {
var curTime = System.currentTimeMillis()
if (curTime - lastClickTime > MIN_CLICK_DELAY_TIME) { //只有大于才会走逻辑
lastClickTime = curTime
noDoubleClick()
}
}
abstract fun noDoubleClick()
}
使用
button.setOnClickListener(object : NoDoubleClickListener() {
override fun noDoubleClick() {
Log.e("TAG", "无法连点两次" )
}
})
运行结果:双击只出现一次log