您的位置:首页 > 移动开发 > Android开发

Android防止按钮两次点击

2016-02-04 14:27 302 查看
过年前最后一篇文章。

公司的项目打算在过完年修改框架。用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了

源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: