在開發中經常會遇到這樣的情況,一個按鈕點擊後會彈出Toast或者Dialog,如果快速重復地點擊,則Toast則會重復地出現. 而我們想要的效果是一定時間內的點擊只生效一次,或者說這種快速且重復的點擊為無效點擊.
解決的思路如下:
1. 需要定義一個全局變量 lastClickTime, 用來記錄最後點擊的時間.
2. 每次點擊前需要進行判斷, 用lastClickTime 和當前時間想比較,並且更新最後點擊時間,若小於臨界值,則算無效點擊,不觸發事件
下面請看代碼:
工具類:
public class CommonUtils {
private static long lastClickTime;
public static boolean isFastDoubleClick() {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if ( 0 < timeD && timeD < 800) {
return true;
}
lastClickTime = time;
return false;
}
}
控件點擊的處理:
public void onClick(View v) {
if (Utils.isFastDoubleClick()) {
return;
}else{
//彈出Toast或者Dialog
}
}
這樣,兩次點擊時間相隔小於800ms,便不會觸發事件,具體的臨界時間可以根據需求自己修改.