1. 程式人生 > >andorid 防快速重複點選的全域性設定

andorid 防快速重複點選的全域性設定

開發中,相信很多人都遇到重複提交的問題,很大部分情況是因為介面響應慢,前端點選事件未設定不可點選,導致使用者點選的時候出現連續點選多次的操作。也有的是因為點選的時候彈出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到了沒呢?是不是很簡單