Android防止按钮两次点击
2016-02-04 14:27
302 查看
过年前最后一篇文章。
公司的项目打算在过完年修改框架。用eventbus的模式,于是最近就看了下EventBus,Otto,RxJava,RxAndroid,RxBus。今天看到抛物线写的RxJava解析。有这么一句引起我的注意:
在每次事件触发后的一定时间间隔内丢弃新的事件。常用作去抖动过滤,例如按钮的点击监听器
我联想到我们应用的登录,注册,收藏的按钮容易产生多次点击的问题,比如:我们的收藏如果出现了双击,提交两次用户收藏上去,服务器会返回服务器操作时报的报文,让人很不爽。
我们目前的处理方式的这样的:
点击之后,设置按钮点击状态不可点击,等请求回来或者超时之后再让按钮可以点击。
这样造成的问题就是比如在登录的时候请求很多,要在在所有的请求完成或者超时之后才能恢复点击,代码写得有点恶心。
在每次事件触发后的一定时间间隔内丢弃新的事件。常用作去抖动过滤,例如按钮的点击监听器
看到这句话,我想到我们常用的双击退出。原理是一致的。写一个SingleClickBtn
重写onTouchEvent事件,如果两次点击间隔不够久
然后在xml就可以直接使用这个button了
源码下载
公司的项目打算在过完年修改框架。用eventbus的模式,于是最近就看了下EventBus,Otto,RxJava,RxAndroid,RxBus。今天看到抛物线写的RxJava解析。有这么一句引起我的注意:
在每次事件触发后的一定时间间隔内丢弃新的事件。常用作去抖动过滤,例如按钮的点击监听器
我联想到我们应用的登录,注册,收藏的按钮容易产生多次点击的问题,比如:我们的收藏如果出现了双击,提交两次用户收藏上去,服务器会返回服务器操作时报的报文,让人很不爽。
我们目前的处理方式的这样的:
点击之后,设置按钮点击状态不可点击,等请求回来或者超时之后再让按钮可以点击。
这样造成的问题就是比如在登录的时候请求很多,要在在所有的请求完成或者超时之后才能恢复点击,代码写得有点恶心。
在每次事件触发后的一定时间间隔内丢弃新的事件。常用作去抖动过滤,例如按钮的点击监听器
看到这句话,我想到我们常用的双击退出。原理是一致的。写一个SingleClickBtn
重写onTouchEvent事件,如果两次点击间隔不够久
private long last_time = 0L; @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: long current_time = System.currentTimeMillis(); long d_time = current_time - last_time; if (d_time < TIME_GAP) {//TODO last_time = current_time; return true; } else { last_time = current_time; } break; } return super.onTouchEvent(event); }
然后在xml就可以直接使用这个button了
源码下载
相关文章推荐
- android studio cmd $ANDROID_HOME is not defined
- 【Android】3.12 兴趣点( POI)搜索功能
- android 入门 001 (界面布局)
- Android仿知乎图片墙
- Android使用自定义控件HorizontalScrollView打造史上最简单的侧滑菜单
- Inside of Jemalloc
- 【Android】3.11 地理编码功能
- ANDROID_HOME on Mac OS X
- Andriod界面设计适配和Android Studio中的资源
- fragment+viewpage设置不预加载页面
- 【Android】3.10 热力图功能
- Android 中 startActivityForResult和setResult详解
- android:configChanges属性描述
- Android关闭输入法键盘
- ViewHolder写法
- Android 自定义组合控件
- 【Android】3.9 覆盖物功能
- 解决Android键盘出来把底部按钮顶上来的方法
- 进入activity 不自动弹键盘
- listview如果添加的有Headview和Footview,onItemClick数值异常