zoukankan      html  css  js  c++  java
  • 关于Android避免按钮重复点击事件

    最近测试人员测试我们的APP的时候,喜欢快速点击某个按钮,出现一个页面出现多次,测试人员能不能禁止这样。我自己点击了几下,确实存在这个问题,也感觉用户体验不太好。于是乎后来我搜了下加一个方法放在我们Utils类里

    // 判断按钮是否快速点击
    private static long lastClickTime;
    public synchronized static boolean isFastClick() {
    long time = System.currentTimeMillis();
    if (time - lastClickTime < 500) {
    return true;
    }
    lastClickTime = time;
    return false;
    }

    这样我就在onclick()方法里加如下代码

    public void onClick(View v) {
        if(Utils.isFastClick){
                return;
         }                
     }

    加了之后,的确是禁用了某个界面的的重复点击,于是我就高兴地告诉测试人员我解决了这个问题,他看了之后,也说了没问题了。但是好景不长,他就又在其他页面发现可以重复点击,有特么出现多个页面了,说最后都不要重复点击。下班的路上我左思右想,还点击其他的APP,发现都没有重复点击事件。第二天早上我起床的时候,突然冒出一个想法,如果我在父类实现onclicklistener方法 重写onclick方法,然后写一个禁止重复点击的方法,那么子类就应该不会出现重复点击事件了。于是我google了好久,没有发现一个比较好的例子,在我们组经验丰富程序员的帮助下,这里也非常感谢他,呵呵,为此我给了他一个苹果。最终有了以下的代码。

    禁止重复点击
        public void avoidDouleClick(View v) {
            clickView = v;
            if (oldId == -1) {
                lastClickTime = SystemClock.elapsedRealtime();
                oldId = v.getId();
                return;
            } else if (v.getId() == oldId) {
                long time = SystemClock.elapsedRealtime();
                if (time - lastClickTime < 500) {
                    v.setId(0);
                    return;
                }
            } else if (v.getId() == 0) {
                lastClickTime = SystemClock.elapsedRealtime();
                v.setId(oldId);
            }
        }

    这个思路其实就是禁止一个button的id连续点击超过500毫秒,这样不就避免了重复点击事件。这样子Activity重写onClick()方法,这样子类就不要再次实现OnClickListener接口了,就能少写点代码了。

    @Override
        public void onClick(View v) {
            super.onClick(v);
        }

    当然,在BaseFragment也要像BaseActivity一样。这样就能禁止Actvitity和Fragment的重复点击事件了。

  • 相关阅读:
    设计模式之迭代器与组合模式(三)
    设计模式之迭代器与组合模式(二)
    设计模式之迭代器与组合模式(一)
    设计模式之模板方法模式(一)
    设计模式之模板方法模式(三)
    设计模式之模板方法模式(二)
    Spring Cloud微服务初探
    设计模式之适配器模式与外观模式(二)
    设计模式之适配器模式与外观模式(一)
    设计模式之命令模式(三)
  • 原文地址:https://www.cnblogs.com/tleopard/p/5367627.html
Copyright © 2011-2022 走看看