在开发中会遇到这种情况,就是连续快速点击一个按钮,这个按钮也许是触发启动一个activity也许是访问网络数据或者是别的,而此时的连续点击就会造成多次触发这些事件,造成不必要的activity启动或者资源浪费等等。要解决此方法很简单,只需要以下这么做:
首先定义一个Utils类:
public class Utils{
private static long lastClickTime=0;
public static boolean isFastDoubleClick(){
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if (timeD >= 0 && timeD <= 400){
return true;
}else {
lastClickTime = time;
return false;
}
}
}
如果只是某个特定的按钮,需要这么做的话可以在指定按钮事件触发时添加如下方法:
public void onClick(View v) {
if (Utils.isFastClick()) {
return ;
}
}
还有个一劳永逸的方法就是写一个基类,然后继承你的基类,在基类中添加如下方法:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
if(ev.getAction() == MotionEvent.ACTION_DOWN){
if(Utils.isFastDoubleClick()){
return true;
}
}
return super.dispatchTouchEvent(ev);
}