andorid 防快速重複點選的全域性設定
阿新 • • 發佈:2018-11-07
開發中,相信很多人都遇到重複提交的問題,很大部分情況是因為介面響應慢,前端點選事件未設定不可點選,導致使用者點選的時候出現連續點選多次的操作。也有的是因為點選的時候彈出loading圈,可是彈出的慢了,導致多次點選被響應。
這個時候我們可能想到的操作就是,在使用者點選的時候,將控制元件設定為不可點選,在請求響應之後,修改控制元件是否可點選的狀態。在開發中,會有很多不同的點選事件,每個點選事件我們都要去修改控制元件是否可點選,繁瑣不說,一直在Ctrl+C和 Ctrl+V。
這就給出簡單便捷全域性設定防重複點選的方法:
//上次點選的時間 Long lastClickTime; private Boolean isFastDoubleClick(){ //這次點選的時間 Long time = System.currentTimeMillis(); //計算兩次時間差 Long timeD = time- lastClickTime; if (0<timeD && timeD<365){ LogUtils.i("isFastDoubleClick","FAST_DOUBLE_TIME="+timeD) return true; } lastClickTime = time; return false; }
在BaseActivity中重寫 dispatchTouchEvent方法:
@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN){ //判斷兩次點選事件的時間是否太短 if (Utils.isFastDoubleClick()){ return true; } } return super.dispatchTouchEvent(ev); }
在兩次點選的時間差在365毫秒(這個值可以自己設定)內,都統一不響應。get到了沒呢?是不是很簡單