使用场景:如果一个按钮的逻辑有跳转activity功能(activity由于业务逻辑不能修改启动模式),此时快速单击两下按钮,会弹出两个相同的页面(网络请求也通用)
解决思路:获取两次单击事件的时间差,在dispatchTouchEvent中判断。
代码如下:
private long lastClickTime = 0;
//设置拦截的时间间隔 500毫秒
private long RESTRICT_TIME = 500;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
/**
* 拦截两次时间差小于RESTRICT_TIME
*/
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (isFrequentlyClick()) {
//可以在这里给点提示
//ToastUtils.showShort("不要频繁点击!");
return true;
}
}
return super.dispatchTouchEvent(ev);
}
public boolean isFrequentlyClick() {
long clickTime = System.currentTimeMillis();
long value = clickTime - lastClickTime;
lastClickTime = clickTime;
return value <= RESTRICT_TIME;
}
如果多个页面需要拦截频繁点击可以直接写在BaseActivity中。