Android 無入侵解決按鈕重復點擊---onClick處理<一>

Android 按鈕重復點擊處理<一行代碼解決>

一. 介紹

問題描述: 用戶快速連續點擊按鈕時, 容易引發各種問題.
網上解決方案: Android優雅地處理按鈕重復點擊

這篇文章是2018年9月份發的, 300多個贊, 而且綜合比較了各種解決方案, 文章中使用AOP+注解的方式處理, 也算是不錯的解決方案,

發現問題: 代碼還是存在入侵的現象, 雖然只是一個注解, 但是需要在項目的每個onClick加上注解@SingleClick, 如果是已經上線的項目, 需要全局修改, 說不定會漏掉一部分.

解決辦法: 利用Hook技術, 這里我把解決方法封裝成開源庫了.
github地址: https://github.com/liys666666/DoubleClick

DoubleClick---3.0版本
DoubleClick---2.0版本
DoubleClick---1.0版本

框架主要有兩個功能:
1.無入侵解決按鈕重復點擊 (本章內容)
2.onClick重復邏輯統一處理

二. 框架的使用 (建議使用最新版本)

1. 簡單使用

① 導入框架

//項目根目錄下,build.gradle
allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }  //添加
        }
    }
//app目錄下build.gradle
dependencies {
    implementation 'com.github.liys666666:DoubleClick:V1.0.4'  //添加
}

② 自定義的Application初始化即可

public class AppApplication extends Application{

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

        ViewDoubleHelper.init(this); //默認時間:1秒
//        ViewDoubleHelper.init(this, 2000); //自定義點擊間隔時間(單位:毫秒)
    }
}

如果不需要其它的功能, 到這里就解決了.

2. 如果某個Activity里不需要處理重復點擊事件, 怎么辦?

解決辦法: 讓對應的Activity 實現 DoubleClickCancel接口即可.

3. 特殊要求: 只有一部分按鈕需要處理重復點擊, 怎么辦?

用以下方法, 可以自由添加或取消某個View, 如果控件比較多, 可以寫成數組, 然后循環處理

        //取消hook事件
        ViewDoubleHelper.cancelHookView(R.id.btn1);
        ViewDoubleHelper.cancelHookView(findViewById(R.id.btn1));
        //添加hook事件
        ViewDoubleHelper.hookResView(R.id.btn2);
        ViewDoubleHelper.hookResView(R.id.btn2, 2000); //自定義時間(單位: 毫秒)
        ViewDoubleHelper.hookView(findViewById(R.id.btn2));
        ViewDoubleHelper.hookView(findViewById(R.id.btn2), 2000); //自定義時間(毫秒)

優點:

  1. 沒有入侵原來的代碼, 普通的要求一行代碼就能解決.
  2. 可以隨時增加或刪除, 可以局部也可以全部, 不會影響原來的代碼.
  3. 對于有特殊要求的, 也可以單個自定義間隔時間.

缺點:
對于特殊需求還是存在代碼入侵現象, 需要在具體的Activity寫代碼.
2.0版本解決這個問題, 完全不需要在Activity寫代碼.
2.0使用說明:
http://www.lxweimin.com/p/df0ef3866cc1

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容