Androidボタンの複数回の繰り返しクリックを有効に防止する方法
1848 ワード
テストやユーザーが頻繁にボタンをクリックすることを防止するために、プログラムが短時間で複数回のデータ提出orデータ処理を行う場合、その時になると穴があいてしまいます.
では、このような状況を効果的に避けるにはどうすればいいのでしょうか.
ユーザーがボタンをクリックする間隔を判断し、間隔が短すぎると無効な操作と判断し、そうでなければ関連業務処理を行うという考えです.
まずこの抽出をツールクラス(次の呼び出しに便利)とし,ButtonUtilsと名付けた(ネット上のいくつかのスキームを参照して実験と修正を行った)
2回のクリック間隔を判断することにより,現在のクリック操作が有効な操作であるか否かを判定する.では、どのようにして使用中に呼び出すのでしょうか.下を見続けます...
!ButtonUtils.isFastDoubleClick(R.id.gv_integralstore):これがキーです.私の考えはクリックイベントの中で判断して、現在のクリックイベントが有効なクリックイベントであるかどうかを見ることです.
よし、簡単で実用的な防止ボタンを何度も繰り返しクリックするツール類ができました.の
では、このような状況を効果的に避けるにはどうすればいいのでしょうか.
ユーザーがボタンをクリックする間隔を判断し、間隔が短すぎると無効な操作と判断し、そうでなければ関連業務処理を行うという考えです.
まずこの抽出をツールクラス(次の呼び出しに便利)とし,ButtonUtilsと名付けた(ネット上のいくつかのスキームを参照して実験と修正を行った)
public class ButtonUtils {
private static long lastClickTime = 0;
private static long DIFF = 1000;
private static int lastButtonId = -1;
/**
* , 1000,
*
* @return
*/
public static boolean isFastDoubleClick() {
return isFastDoubleClick(-1, DIFF);
}
/**
* , 1000,
*
* @return
*/
public static boolean isFastDoubleClick(int buttonId) {
return isFastDoubleClick(buttonId, DIFF);
}
/**
* , diff,
*
* @param diff
* @return
*/
public static boolean isFastDoubleClick(int buttonId, long diff) {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if (lastButtonId == buttonId && lastClickTime > 0 && timeD < diff) {
Log.v("isFastDoubleClick", " ");
return true;
}
lastClickTime = time;
lastButtonId = buttonId;
return false;
}
}
2回のクリック間隔を判断することにより,現在のクリック操作が有効な操作であるか否かを判定する.では、どのようにして使用中に呼び出すのでしょうか.下を見続けます...
gv_isf.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> arg0, View arg1, int arg2,
long arg3) {
if (!ButtonUtils.isFastDoubleClick(R.id.gv_integralstore)) {
//
}
}
});
!ButtonUtils.isFastDoubleClick(R.id.gv_integralstore):これがキーです.私の考えはクリックイベントの中で判断して、現在のクリックイベントが有効なクリックイベントであるかどうかを見ることです.
よし、簡単で実用的な防止ボタンを何度も繰り返しクリックするツール類ができました.の