Android onClick重复逻辑统一处理---onClick处理<二>

问题描述 比较经典的一个问题就是, 在个人中心判断是否登录这个问题了. 在个人中心点击的时候, 很多按钮需要判断是否登录. 于是这样写.

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn1:
                if(!isLogin){
                    return;
                }
                break;
            case R.id.btn2:
                if(!isLogin){
                    return;
                }
                break;
            case R.id.btn3:
                if(!isLogin){
                    return;
                }
                break;
            case R.id.btn4:

                break;
        }
    }

解决办法1: 使用AOP+注解的方式
每个重复的逻辑我还得跑去封装一个注解, 好麻烦, 我比较懒, 不太喜欢这种方式.

解决办法2: 用hook方式, 我已经封装成框架.
github地址: https://github.com/liys666666/DoubleClick

框架主要有两个功能:
1.无入侵解决按钮重复点击
2.onClick重复逻辑统一处理 (本章内容)

一. 框架引入

//项目根目录下,build.gradle
allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }  //添加
        }
    }
//app目录下build.gradle
dependencies {
    implementation 'com.github.liys666666:DoubleClick:V1.0.4'  //添加
}
//初始化
ViewDoubleHelper.init(application); //点击间隔时间. 默认时间:1秒

二. 使用方法:

① 自定义需要处理逻辑的类, 继承BaseCustomClickListener.
例如: 登录处理.

public class LoginClickListener extends BaseCustomClickListener {

    public static boolean isLogin = false;

    @Override
    public boolean isNext(View v) {
        //判断登录逻辑 (onClick前执行)

        return isLogin;  //true继续执行onClick,  false不再执行
    }

    @Override
    public void after(View view) {
        //onClick后 执行
    }

}

②Activity中

        //统一处理
        int[] ids = {R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4}; //需要处理的id
        for (int i = 0; i < ids.length; i++) {
            ViewDoubleHelper.customHookResView(ids[i], new LoginClickListener());
//        ViewDoubleHelper.customHookView(findViewById(ids[i]), new LoginClickListener());
        }

缺点:
还是存在代码入侵现象, 需要在具体的Activity写代码.
2.0版本解决这个问题, 完全不需要在Activity写代码.
2.0使用说明:
//www.greatytc.com/p/df0ef3866cc1

到这里就结束了, 希望能帮到有需要的人, 如果觉得好用, 欢迎star.

技术有限, 如果框架中存在什么问题, 欢迎在下载评论区留言.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【 今年势必会孵化出二个年薪30 万以上,三个年薪 20万以上,十个年薪 10万以上的家人】 【刘帅势必要成为二个...
    大德帅帅阅读 936评论 0 0
  • 云顶世界 作者:薛应南 周日,天气预报说有雨。于是,我拿起雨伞出去...
    Li三金阅读 3,493评论 0 1
  • “啪!”的一声。 夜默向苏馨丢去了一块小石头。 待溅起一簇小水花后。 苏馨皱了皱黛眉,随即扭头看向夜默道:“臭...
    逍遥命天阅读 2,593评论 0 0
  • #1.前言 组织架构微服务是面向Glue微服务平台的一个微服务,属于Glue的基础功能。组织架构微服务提供对企业内...
    sensejw阅读 3,490评论 0 0