在開發中經常會遇到這樣的情況,一個按鈕點擊後會彈出Toast或者Dialog,如果快速重複地點擊,則Toast則會重複地出現. 而我們想要的效果是一定時間內的點擊只生效一次,或者說這種快速且重複的點擊爲無效點擊.
點擊進入: 品牌服飾鞋包9.9元特價包郵搶購:http://shop109590806.taobao.com/
解決的思路如下:
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 (CommonUtils.isFastDoubleClick()) {
- return;
- }else{
- //彈出Toast或者Dialog
- }
- }
這樣,兩次點擊時間相隔小於800ms,便不會觸發事件,具體的臨界時間可以根據需求自己修改.