通过 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 }
方案一: 项目中如果使用了 Rx,可以引入 JakeWharton 大神的 RxBiding 库,不仅实现了防止重复点击,而且防抖,节流什么的,要啥有啥。
方案二:classpath ‘com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4’ 类似的库