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.簡単に使う
①フレームワークの導入
②カスタムアプリケーションを初期化すればよい
他の機能が不要であれば、ここで解決する.
2.あるActivityで重複クリックイベントを処理する必要がない場合、どうすればいいですか?
解決方法:対応するActivityにDoubleClickCancelインタフェースを実現させる.
3.特殊要求:一部のボタンだけが重複クリックを処理する必要があります.どうすればいいですか?
以下の方法で、ビューを自由に追加またはキャンセルできます.コントロールが多い場合は、配列として書き、ループ処理できます.
メリット:は元のコードに侵入せず、普通の要求は1行のコードで解決できる. は随時追加または削除することができ、局所的にもすべて可能であり、元のコードに影響を及ぼさない. は、特別な要求がある場合には、個別のカスタム間隔時間であってもよい.
欠点:特殊な需要に対してやはりコードの侵入現象が存在して、具体的なActivityでコードを書く必要がある.2.0バージョンでこの問題を解決するには、Activityでコードを書く必要はありません.2.0使用説明:https://www.jianshu.com/p/df0ef3866cc1
ここまでで終わり、必要な人を助けてほしい、使いやすいと思ったら、starを歓迎します.
技術が限られているので、フレームワークに何か問題があれば、コメントエリアのコメントをダウンロードしてください.
一.紹介する
ユーザがボタンをすばやく連続的にクリックすると、様々な問題が起こりやすい.オンラインソリューション: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); // ( )
メリット:
欠点:特殊な需要に対してやはりコードの侵入現象が存在して、具体的なActivityでコードを書く必要がある.2.0バージョンでこの問題を解決するには、Activityでコードを書く必要はありません.2.0使用説明:https://www.jianshu.com/p/df0ef3866cc1
ここまでで終わり、必要な人を助けてほしい、使いやすいと思ったら、starを歓迎します.
技術が限られているので、フレームワークに何か問題があれば、コメントエリアのコメントをダウンロードしてください.