依赖本库,不用写任何代码,所有点击事件自动防重复点击;
对 butterKnife 自动生成的点击事件同样有效
默认防重复点击间隔 500ms 修改全局默认间隔:
SingleClickManager.setClickInterval(1500);
如果想自定义点击事件间隔,加上注解(参数单位ms):
@SingleClick(1000)
public void onClick(View v) {
...
}
注解参数为0 表示取消防重 不写参数 默认500ms
若在一个点击事件方法有多个view的情况,想排除其中某些view不防双击使用以下方式:
//app 模块内如下
@SingleClick(value = 1000, except = {R.id.tv1, R.id.button})
@OnClick({R.id.tv1, R.id.button, R.id.button2})
public void onViewClicked(View view) {
...
}
//其它业务模块如下(模块的R文件值不是final,而注解参数只能是final)
@SingleClick(value = 1500, exceptIdName = {"testBtn2"})
@OnClick({R2.id.testBtn1, R2.id.testBtn2})
public void onViewClicked(View view) {
...
}
ps:直接在布局里指定的点击事件无法做到自动防重,请打上注解
如果点击事件用了lambda写法,则无法做到自动防重;解决方案:把点击事件执行的代码抽离成方法,把注解写在这个方法上
本库自动拦截 on*Click方法,如过项目中有非点击事件的 on*Click方法请改名
1.5版本更新检测线程忙碌功能,之前版本能在快速点击2个不同按钮的情况下同时打开2个页面,本次更新修复这个问题,并对老旧卡顿的机器友好
buildscript {
...
dependencies {
...
classpath 'cn.leo.plugin:magic-plugin:1.0.0' //java 用这个
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0' //kotlin 用这个
}
}
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
google()和jcenter()这两个仓库一般是默认的,如果没有请加上
...
apply plugin: 'cn.leo.plugin.magic' //java 用这个
apply plugin: 'android-aspectjx' //kotlin 用这个,编译速度会慢点
...
dependencies {
...
implementation 'com.github.jarryleo:SingleClick:v1.8.3'
}
以上java和kotlin插件二选一,如果AS版本低于3.0请使用kotlin的插件
用于支持kotlin的插件用的是 aspectjx
感谢插件作者
因为编织所有二进制文件的问题导致编译速度慢的问题,请查看原作者提供的解决方案