什么是防抖处理:简单来说,就是我们在使用app的时候,经常会因为网络延迟等原因出现双击或多次点击某个按钮的情况,而防抖处理,就是避免在短时间内多次触发点击事件。每次点击事件会检查时间间隔,只有当时间间隔大于等于设定的延迟时间时才会触发实际的点击事件处理逻辑。这种防抖处理常用于用户界面中,以确保点击行为不被频繁触发,提高用户体验。
了解原理过后,代码实现起来,就非常简单了:
fun View.setClickWithDelay(clickAction: (View) -> Unit) {
val debounceTime: Long = 500
var lastClickTime = 0L
this.setOnClickListener { view ->
val currentTime = System.currentTimeMillis()
if (currentTime - lastClickTime >= debounceTime) {
lastClickTime = currentTime
clickAction(view)
}
}
}
新人报到,请各位大佬多多关照