在Android开发中,经常会忽略点击多个控件的防控.
如果,我们没有对多个点击事件做防控的话,那么当用户同时点击多个控件时,或者多次点击一个控件时,就会造成各种各样的bug
防止同时点击多个控件
这个很简单只需要在xml文件中加入一行代码即可:
android:splitMotionEvents="false"
这句话加在xml中的父容器中,是所有的父容器中。
这句话表示每个父容器每次点击只能点击一个其中的元素,点击其他无效。
防止控件点击多次
在我们在写的时候尽量 所有的Activity都继承一个Base类,这样我们写的时候就会方便很多
public static final int MIN_CLICK_DELAY_TIME = 800; // 连点最短时间
public long lastClickTime1 = 0; // 记录点击时间
public long lastClickTime2 = 0; // 记录点击时间
/**
* 主要的方法,重写dispatchTouchEvent
*
* @param ev
* @return
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_UP: // 抬起
long currentTime1 = Calendar.getInstance().getTimeInMillis();
if (currentTime1 - lastClickTime1 > MIN_CLICK_DELAY_TIME) {
lastClickTime1 = currentTime1;
} else {
return true;
}
break;
case MotionEvent.ACTION_DOWN: // 按下
long currentTime2 = Calendar.getInstance().getTimeInMillis();
if (currentTime2 - lastClickTime2 > MIN_CLICK_DELAY_TIME) {
lastClickTime2 = currentTime2;
} else {
return true;
}
break;
case MotionEvent.ACTION_MOVE: // 滑动
break;
}
return super.dispatchTouchEvent(ev);
}
MIN_CLICK_DELAY_TIME 这个就是处理点击事件的间隔时间
注意: 这里如果不是base的话每个Activity都要写,如果是BaseActivity就只需要写一次就好...