这边我是重写了一个类baseActivity作为我们的activity。那么会容易进行统一操作。以前最容易遇到的一个问题安卓手机在卡顿的时候,我们点击下去导致了各种原本只能操作一次的问题导致操作俩次了。所以这边我进行了一个设置就是延时点击。这样能够避免大部分的问题。所以呢。有必要的可以看看。最重要的时候代码统一。这样的效果是会让你更加容易的调用。
那么代码如下:首先我们要重写dispatchTouchEvent这个方法。这个是事件消耗的问题:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (mOpenTouchEventDelay && ev.getAction() == MotionEvent.ACTION_DOWN) {
if (isFastDoubleClick()) {
return true;
}
}
return super.dispatchTouchEvent(ev);
}
首先先看一下。为什么要这么写呢。考虑到我们可能不会去使用这个方法,那么在里面进行这样设定。上面标红的俩个呢是我下面要贴的代码
这张图片来源于http://www.tuicool.com/articles/7bIVrme为了让大家更好的看到。那么这个时候其实很明确。如果通过呢就是返回true通知消息发出去了。
那么这个时候我们继续下面的代码:
public boolean isFastDoubleClick() {
long time = System.currentTimeMillis();
long timeD = time - mLastClickTime;
if (timeD >= 0 && timeD <= 500) {
return true;
} else {
mLastClickTime = time;
return false;
}
}
/**
* 解决快速点击单个按钮,出现多个页面的问题
* @param open 是否打开
*/
protected void openTouchDelay(boolean open) {
mOpenTouchEventDelay = open;
}
设定一个时间进行延时。那么写到我们的统一baseactivity里面。那么我们怎么调用呢- -其实就简单了。
mLastClickTime是里面的全局变量
只要在你需要的页面调用
openTouchDelay(true);
这个就解决问题了。但是记着这个是让这个页面所有的都会发生这样的延迟。
好了~~代码就讲解到这边了。。。难度没有很多