1、kotlin实现

通过 Kotlin 拓展, 在拓展类中新增两个方法

fun View.OnClickListener.initSingleClickListener(vararg views: View) {
views.map {
it.setOnSingleClickListener(this)
}
}

fun View.setOnSingleClickListener(listener: View.OnClickListener) {
setOnClickListener {
isClickable = false
listener.onClick(this)
postDelayed({ isClickable = true }, 1000)
}
}

使用:
initSingleClickListener(button1, button2)

Activity 或者 Fragment 实现 View.OnClickListener 接口, 正常使用就可以了
override fun onClick(v: View){
// todo
}

2、java实现

方案一:
项目中如果使用了 Rx,可以引入 JakeWharton 大神的 RxBiding 库,不仅实现了防止重复点击,而且防抖,节流什么的,要啥有啥。

方案二:classpath ‘com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4’ 类似的库

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐