Skip to content

代码无侵入 , 一行代码解决 1. 防重复点击. 2. onClick前插入自定义ClickListener

Notifications You must be signed in to change notification settings

liys666666/DoubleClick

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1072281 · Jun 29, 2020

History

52 Commits
Jun 29, 2020
Nov 23, 2019
Nov 23, 2019
Aug 22, 2019
Aug 22, 2019
Jun 29, 2020
Aug 28, 2019
Nov 23, 2019
Jun 29, 2020
Aug 22, 2019
Aug 22, 2019
Aug 22, 2019
Aug 22, 2019

Repository files navigation

DoubleClick

简书: DoubleClick---3.0版本

DoubleClick---2.0版本

DoubleClick---1.0版本

V3.0 的使用方法:

1.导入:

//项目根目录下,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毫秒.

2.添加自定义属性:

public class AppApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();

        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后
    }

}

扩展---可调用方法

DoubleClickHelper.openAll(); //开启
DoubleClickHelper.closeAll(); //关闭

//(可选)用hook方式处理单个view, 时间会和上面的时间叠加, 一般使用场景: Activity只有个别按钮需要doubleClick
DoubleClickHelper.hookView(View view, long delayTime); 

三.历史版本:

V3.0.0: 使用AOP的方式处理, 使用方式和2.0基本一样, 比2.0的方式性能更好.

V2.0版本.

V1.0版本

  • 如果框架中存在不足或者有什么建议, 欢迎指出, 我这边会尽快处理, 让框架更完善, 希望这个框架能帮助更多人, 如果觉得好用, 欢迎star.

About

代码无侵入 , 一行代码解决 1. 防重复点击. 2. onClick前插入自定义ClickListener

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages