github地址: https://github.com/liys666666/DoubleClick
DoubleClick---3.0版本
DoubleClick---2.0版本
DoubleClick---1.0版本
1. 说明
3.0版本采用的是AOP的方式处理, 性能上会更好一些.
2.使用方式
① 导入框架
//项目根目录下,build.gradle
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.8' //添加
}
}
allprojects {
repositories {
...
maven { url 'https://jitpack.io' } //添加
}
}
//app目录下build.gradle
apply plugin: 'android-aspectjx' //添加
dependencies {
implementation 'com.github.liys666666:DoubleClick:V3.0.0' //添加
}
同一个按钮点击, 默认最小间隔时间是500毫秒. 如果不需要其它的功能, 就搞定解决了. 不需要写任何代码, 如果需要额外的功能, 请继续往下看.
② 添加自定义属性
public class AppApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
// V3.0采用单例模式
DoubleClickHelper
.getInstance()
.delayTime(500) //间隔时间
.addAnnotationClass(UnifiedDoubleClick.class) //自定义属性, 可叠加
.addAnnotationClass(UnifiedDoubleClick2.class);
}
}
public interface UnifiedDoubleClick{ //用户自定义接口
// >>>>>>>>>>>>>>>>>>>屏蔽DoubleClick的Activity>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// @ACancelActivity(activitys = {
// MainActivity.class,
// })
// void cancelActivity();
// >>>>>>>>>>>>>>>>>>>单个view处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@AAddDoubleClick(activity = MainActivity.class,
addIds = {R.id.btn1, R.id.btn2},
times = {0, 2000}) //点击的间隔时间
void mainActivity();
// >>>>>>>>>>>>>>>>>插入自定义clickListener>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@AClickListener(activity = MainActivity.class,
lisenner = LoginClickListener.class, //用户自定义clickListener
ids = {R.id.btn2})
void interceptMain();
}
//模拟登陆监听
public class LoginClickListener implements IOnClickListener {
public static boolean isLogin = false;
@Override
public boolean isNext(View v) {
//判断登录逻辑
if(!isLogin){
LogUtil.d("未登录");
Toast.makeText(v.getContext(), "未登录", Toast.LENGTH_SHORT).show();
}
return isLogin;
}
@Override
public void after(View view) {
//执行click后
}
}
3. V3.0和V2.0使用区别
①. 3.0导入框架方式多了AOP插件
②. 3.0无需init()初始化.
③. 2.0的ViewDoubleHelper 换成 DoubleClickHelper 并且是单例模式
④. 3.0 插入自定义的OnClickListener 是要实现 IOnClickListener 接口