Android之关于点击多次的导致多个页面问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fox_wei_hlz/article/details/69665126

这边我是重写了一个类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);
这个就解决问题了。但是记着这个是让这个页面所有的都会发生这样的延迟。

好了~~代码就讲解到这边了。。。难度没有很多

展开阅读全文

没有更多推荐了,返回首页