Android無侵入解決ボタンを繰り返しクリック---DoubleClick 2.0の使用
4151 ワード
Androidボタンの繰り返しクリック処理.Android hookはカスタムClickListenerを挿入し、侵入は全くなかった.
githubアドレス:https://github.com/liys666666/DoubleClick
DoubleClick---3.0バージョンDoubleClick---2.0バージョンDoubleClick---1.0バージョン
紹介する
1.0バージョンを見たことがない場合は、まず背景紹介を見てみましょう.
一.きほんしよう
①フレームワークの導入
②カスタムアプリケーションを初期化すればよい
他の機能が不要であれば、ここで解決する.(バージョン1.0と同じ)
二.特殊要求処理------1.0バージョンとは異なりますあるActivityで重複クリックイベントを処理する必要がなければ、どうしますか? 一部のボタンだけが重複クリックを処理する必要がありますが、どうすればいいですか?方法は以下の通りである:1.インタフェースを定義します2.UnifiedDoubleClickで定義する方法、方法名は随意で、注釈で解決する.3.注記の意味@ACancelActivity:繰り返しクリックするActivityを処理する必要はありません@AAddDoubleClick:DoubleClickを単独で扱うコントロール(複数のActivityがある場合は複数のメソッドを定義するだけでよい)activity:viewが存在するActicity addIds:Viewのid times:Click最小間隔時間.times=0の場合、Viewは重複するクリックイベントを処理する必要がない.
三.カスタムClickListenerを挿入(よく使用)----1.0バージョンとは異なります
一般的なシーン:ログインするかどうかを判断します.1つのアプリに複数の場所がクリックされる場合は、ログインするかどうかを判断する必要があります.この場合、if判断を多くの場所で書く必要があります.このフレームワークを使用すると、元のページでログインするかどうかを判断する必要がなく、正常な論理を書くことができます.もちろん、AOPでもこの効果が得られますが、AOP環境を導入しなければなりません.AOPのいくつかの注釈の使用を学ばなければなりません.私はやはり面倒だと思います.
使用方法:例1として登録するか否かを判断する.クラスを定義し、BaseClickListenerを継承
②.@AClickListener activity:viewが存在するActicity listener:挿入されたカスタムClickListener ids:Viewのidを使用
効果:MainActivity 2で、btnとbtn 2をクリックすると、すでにログインしている場合は、それらのonClickメソッドを実行します.そうでない場合は、実行しません.
以上より、
1.基礎運用のみであれば、直接1行のコードで解決する.
2.特別な必要がある場合は、カスタムUnifiedDoubleClickを使用して注釈を組み合わせ、初期化すると次のようになります.@ACancelActivity:重複クリック処理不要Activity. @AAddDoubleClick:DoubleClickを個別に処理するコントロール(複数のActivityが使用されている場合は、複数のメソッドを定義するだけでよい) @AClickListener:カスタムClickListenerを挿入(複数のActivityが使用されている場合は、複数のメソッドを定義するだけでよい) 利点:どんな処理をしても、元のコードに全く侵入せず、勝手に削除して変更することができる.
ここまでで終わり、必要な人を助けてほしい、使いやすいと思ったら、starを歓迎します.
技術が限られているので、フレームワークに何か問題があれば、コメントエリアのコメントをダウンロードしてください.
githubアドレス:https://github.com/liys666666/DoubleClick
DoubleClick---3.0バージョンDoubleClick---2.0バージョンDoubleClick---1.0バージョン
紹介する
1.0バージョンを見たことがない場合は、まず背景紹介を見てみましょう.
一.きほんしよう
①フレームワークの導入
// ,build.gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' } //
}
}
//app build.gradle
dependencies {
implementation 'com.github.liys666666:DoubleClick:V2.0.6' //
}
②カスタムアプリケーションを初期化すればよい
public class AppApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
// ViewDoubleHelper.init(this); // :1
ViewDoubleHelper.init(this, 500); // ( : )
}
}
他の機能が不要であれば、ここで解決する.(バージョン1.0と同じ)
二.特殊要求処理------1.0バージョンとは異なります
//
ViewDoubleHelper.init(this, 1000, UnifiedDoubleClick.class); // ( : )
// ( AnnotationClass )
//ViewDoubleHelper.addAnnotationClass(UnifiedDoubleClick.class);
public interface UnifiedDoubleClick{
// Activity.
@ACancelActivity(activitys = {
MainActivity.class,
MainActivity2.class,
})
void cancelActivity();
// DoubleClick View
@AAddDoubleClick(activity = MainActivity.class,
addIds = {R.id.btn1, R.id.btn2},
times = {0, 2000})
void mainActivity();
@AAddDoubleClick(activity = MainActivity2.class,
addIds = {R.id.btn, R.id.btn2},
times = {2000, 2000})
void mainActivity2();
}
三.カスタムClickListenerを挿入(よく使用)----1.0バージョンとは異なります
一般的なシーン:ログインするかどうかを判断します.1つのアプリに複数の場所がクリックされる場合は、ログインするかどうかを判断する必要があります.この場合、if判断を多くの場所で書く必要があります.このフレームワークを使用すると、元のページでログインするかどうかを判断する必要がなく、正常な論理を書くことができます.もちろん、AOPでもこの効果が得られますが、AOP環境を導入しなければなりません.AOPのいくつかの注釈の使用を学ばなければなりません.私はやはり面倒だと思います.
使用方法:例1として登録するか否かを判断する.クラスを定義し、BaseClickListenerを継承
public class LoginClickListener extends BaseClickListener{
public static boolean isLogin = false; //
@Override
public boolean isNext(View v) {
// (onClick )
return isLogin; //true onClick, false
}
@Override
public void after(View view) {
//onClick
}
}
②.@AClickListener activity:viewが存在するActicity listener:挿入されたカスタムClickListener ids:Viewのidを使用
public interface UnifiedDoubleClick{
//....
@AClickListener(activity = MainActivity2.class,
lisenner = LoginClickListener.class,
ids = {R.id.btn, R.id.btn2})
void interceptMain2(); //
// :
ViewDoubleHelper.init(this, 1000, UnifiedDoubleClick.class); // ( : )
効果:MainActivity 2で、btnとbtn 2をクリックすると、すでにログインしている場合は、それらのonClickメソッドを実行します.そうでない場合は、実行しません.
以上より、
1.基礎運用のみであれば、直接1行のコードで解決する.
// ViewDoubleHelper.init(this); // :1
ViewDoubleHelper.init(this, 500); // ( : )
2.特別な必要がある場合は、カスタムUnifiedDoubleClickを使用して注釈を組み合わせ、初期化すると次のようになります.
ViewDoubleHelper.init(this, 1000, UnifiedDoubleClick.class); // ( : )
ここまでで終わり、必要な人を助けてほしい、使いやすいと思ったら、starを歓迎します.
技術が限られているので、フレームワークに何か問題があれば、コメントエリアのコメントをダウンロードしてください.