Android onClick重復(fù)邏輯統(tǒng)一處理---onClick處理<二>

問題描述 比較經(jīng)典的一個(gè)問題就是, 在個(gè)人中心判斷是否登錄這個(gè)問題了. 在個(gè)人中心點(diǎn)擊的時(shí)候, 很多按鈕需要判斷是否登錄. 于是這樣寫.

    @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+注解的方式
每個(gè)重復(fù)的邏輯我還得跑去封裝一個(gè)注解, 好麻煩, 我比較懶, 不太喜歡這種方式.

解決辦法2: 用hook方式, 我已經(jīng)封裝成框架.
github地址: https://github.com/liys666666/DoubleClick

框架主要有兩個(gè)功能:
1.無入侵解決按鈕重復(fù)點(diǎn)擊
2.onClick重復(fù)邏輯統(tǒng)一處理 (本章內(nèi)容)

一. 框架引入

//項(xiàng)目根目錄下,build.gradle
allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }  //添加
        }
    }
//app目錄下build.gradle
dependencies {
    implementation 'com.github.liys666666:DoubleClick:V1.0.4'  //添加
}
//初始化
ViewDoubleHelper.init(application); //點(diǎn)擊間隔時(shí)間. 默認(rèn)時(shí)間:1秒

二. 使用方法:

① 自定義需要處理邏輯的類, 繼承BaseCustomClickListener.
例如: 登錄處理.

public class LoginClickListener extends BaseCustomClickListener {

    public static boolean isLogin = false;

    @Override
    public boolean isNext(View v) {
        //判斷登錄邏輯 (onClick前執(zhí)行)

        return isLogin;  //true繼續(xù)執(zhí)行onClick,  false不再執(zhí)行
    }

    @Override
    public void after(View view) {
        //onClick后 執(zhí)行
    }

}

②Activity中

        //統(tǒng)一處理
        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());
        }

缺點(diǎn):
還是存在代碼入侵現(xiàn)象, 需要在具體的Activity寫代碼.
2.0版本解決這個(gè)問題, 完全不需要在Activity寫代碼.
2.0使用說明:
http://www.itdecent.cn/p/df0ef3866cc1

到這里就結(jié)束了, 希望能幫到有需要的人, 如果覺得好用, 歡迎star.

技術(shù)有限, 如果框架中存在什么問題, 歡迎在下載評論區(qū)留言.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【 今年勢必會(huì)孵化出二個(gè)年薪30 萬以上,三個(gè)年薪 20萬以上,十個(gè)年薪 10萬以上的家人】 【劉帥勢必要成為二個(gè)...
    大德帥帥閱讀 152評論 0 0
  • 云頂世界 作者:薛應(yīng)南 周日,天氣預(yù)報(bào)說有雨。于是,我拿起雨傘出去...
    Li三金閱讀 592評論 0 1
  • “啪!”的一聲。 夜默向蘇馨丟去了一塊小石頭。 待濺起一簇小水花后。 蘇馨皺了皺黛眉,隨即扭頭看向夜默道:“臭...
    逍遙命天閱讀 358評論 0 0
  • #1.前言 組織架構(gòu)微服務(wù)是面向Glue微服務(wù)平臺(tái)的一個(gè)微服務(wù),屬于Glue的基礎(chǔ)功能。組織架構(gòu)微服務(wù)提供對企業(yè)內(nèi)...
    sensejw閱讀 564評論 0 0

友情鏈接更多精彩內(nèi)容