在開發中常常會遇到這樣的狀況,一個按鈕點擊後會彈出Toast或者Dialog,若是快速重複地點擊,則Toast則會重複地出現。html
而咱們想要的效果是必定時間內的點擊只生效一次,或者說這種快速且重複的點擊爲無效點擊。spa
解決的思路以下:code
1. 須要定義一個全局變量 lastClickTime, 用來記錄最後點擊的時間。htm
2. 每次點擊前須要進行判斷, 用lastClickTime 和當前時間想比較,而且更新最後點擊時間,若小於臨界值,則算無效點擊,不觸發事件。blog
1 public class CommonUtils { 2 private static long lastClickTime; 3 public static boolean isFastDoubleClick() { 4 long time = System.currentTimeMillis(); 5 long timeD = time - lastClickTime; 6 if ( 0 < timeD && timeD < 800) { //800毫秒,可本身設置適當時長 7 return true; 8 } 9 lastClickTime = time; 10 return false; 11 } 12 }
控件點擊的處理:事件
1 public void onClick(View v) { 2 if (Utils.isFastDoubleClick()) { 3 return; 4 }else{ 5 //彈出Toast或者Dialog 6 } 7 }