美文网首页Android开发Android开发经验谈android基础知识
Android onClick重复逻辑统一处理---onClic

Android onClick重复逻辑统一处理---onClic

作者: liys_android | 来源:发表于2019-08-22 22:32 被阅读21次

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

        @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.1'  //添加
    }
    
    //初始化
    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());
            }
    

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

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

    相关文章

      网友评论

        本文标题:Android onClick重复逻辑统一处理---onClic

        本文链接:https://www.haomeiwen.com/subject/xxfasctx.html