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到了没呢?是不是很简单

猜你喜欢

转载自blog.csdn.net/qq_34198206/article/details/82591570