关于Android避免按钮重复点击事件
2016-04-08 13:08
661 查看
最近测试人员测试我们的APP的时候,喜欢快速点击某个按钮,出现一个页面出现多次,测试人员能不能禁止这样。我自己点击了几下,确实存在这个问题,也感觉用户体验不太好。于是乎后来我搜了下加一个方法放在我们Utils类里
这样我就在onclick()方法里加如下代码
加了之后,的确是禁用了某个界面的的重复点击,于是我就高兴地告诉测试人员我解决了这个问题,他看了之后,也说了没问题了。但是好景不长,他就又在其他页面发现可以重复点击,有特么出现多个页面了,说最后都不要重复点击。下班的路上我左思右想,还点击其他的APP,发现都没有重复点击事件。第二天早上我起床的时候,突然冒出一个想法,如果我在父类实现onclicklistener方法 重写onclick方法,然后写一个禁止重复点击的方法,那么子类就应该不会出现重复点击事件了。于是我google了好久,没有发现一个比较好的例子,在我们组经验丰富程序员的帮助下,这里也非常感谢他,呵呵,为此我给了他一个苹果。最终有了以下的代码。
这个思路其实就是禁止一个button的id连续点击超过500毫秒,这样不就避免了重复点击事件。这样子Activity重写onClick()方法,这样子类就不要再次实现OnClickListener接口了,就能少写点代码了。
当然,在BaseFragment也要像BaseActivity一样。这样就能禁止Actvitity和Fragment的重复点击事件了。
// 判断按钮是否快速点击 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的重复点击事件了。
相关文章推荐
- Android数据库 SQLite数据库
- android数据存储——文件存储
- Android Studio配置初识
- Android Studio配置初识
- Android中滑动冲突的解决方案
- 【移动开发】Android应用程序完全退出
- Android 从相机或相册获取图片并裁剪
- Android中的WebService新解
- MT6752/32平台 Android L版本驱动移植
- Android Context 详解
- Android使用socket创建简单TCP连接的方法
- android 时间类各种转换
- Mac下Android Studio crash 意外退出
- Android_滑动的时候头部变化效果
- Android】开发优化之——调优工具:dump hprof file 查看内存情况,找到内存泄露,androidhprof
- RecyclerView的痛点使用
- Android模拟器接收UDP数据包的若干问题分析
- Android开发之Intent
- android中TextView分段展示不同颜色,字体,时间
- ViewAnimator控制视图的隐藏与显示