Android無侵入解決ボタン重複クリック---onClick処理

2357 ワード

Androidボタンの繰り返しクリック処理
一.紹介する
ユーザがボタンをすばやく連続的にクリックすると、様々な問題が起こりやすい.オンラインソリューション:Androidで優雅にボタンを操作して繰り返しクリック
この文章は2018年9月に発表されたもので、300以上の賛で、しかも各種の解決策を総合的に比較して、文章の中でAOP+注釈の方式を使って処理して、悪くない解決策です.
問題を発見する:コードはまだ侵入する現象が存在して、ただ1つの注釈ですが、プロジェクトの各onClickに注釈@SingleClickを加える必要があります、すでにオンラインになったプロジェクトであれば、グローバルな修正が必要で、一部が漏れるかもしれません.
解決方法:Hook技術を利用して、ここで私は解決方法をオープンソースライブラリにパッケージしました.githubアドレス:https://github.com/liys666666/DoubleClick
DoubleClick---3.0バージョンDoubleClick---2.0バージョンDoubleClick---1.0バージョン
フレームワークには主に2つの機能があります.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'  //  
}

②カスタムアプリケーションを初期化すればよい
public class AppApplication extends Application{

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

        ViewDoubleHelper.init(this); //    :1 
//        ViewDoubleHelper.init(this, 2000); //         (  :  )
    }
}

他の機能が不要であれば、ここで解決する.
2.あるActivityで重複クリックイベントを処理する必要がない場合、どうすればいいですか?
解決方法:対応するActivityにDoubleClickCancelインタフェースを実現させる.
3.特殊要求:一部のボタンだけが重複クリックを処理する必要があります.どうすればいいですか?
以下の方法で、ビューを自由に追加またはキャンセルできます.コントロールが多い場合は、配列として書き、ループ処理できます.
        //  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行のコードで解決できる.
  • は随時追加または削除することができ、局所的にもすべて可能であり、元のコードに影響を及ぼさない.
  • は、特別な要求がある場合には、個別のカスタム間隔時間であってもよい.

  • 欠点:特殊な需要に対してやはりコードの侵入現象が存在して、具体的なActivityでコードを書く必要がある.2.0バージョンでこの問題を解決するには、Activityでコードを書く必要はありません.2.0使用説明:https://www.jianshu.com/p/df0ef3866cc1
    ここまでで終わり、必要な人を助けてほしい、使いやすいと思ったら、starを歓迎します.
    技術が限られているので、フレームワークに何か問題があれば、コメントエリアのコメントをダウンロードしてください.