加入点击时间间隔的点击事件IntervalOnClick
2015-12-31 11:06
375 查看
现在市场上手机层出不穷,各式各样,性能也越来越好,有些手机的触摸灵敏度低,然后就会导致我轻轻的碰了两下,然后点击事件就触发了两次。
为了避免这种事情的发生,我根据实际情况定义了一个有可设置点击时间间隔的点击事件抽象类,只要实现了该抽象类,传入一个你需要设定的时间间隔,你就可以避免上面说的快速点击执行多次操作。
直接先附上该类的所有代码(包名自己加入自己的包名)
该类利用了系统的时间戳、android建议使用的容器类SparseArray和View的id作为key,以及抽象类的特性,这个类比较浅显了,如果有哪里看不懂可以留言
对了,具体使用是这样的:
首先要先定义出来,当然也可以不用定义出来,直接使用
这是定义出来的,使用如下:
不用定义的如下:
嗯嗯,我感觉我已经写得够详细了,在使用的时候还是出现问题的话,那我真不知道说什么了,觉得好用的请给我个赞哈~~~
为了避免这种事情的发生,我根据实际情况定义了一个有可设置点击时间间隔的点击事件抽象类,只要实现了该抽象类,传入一个你需要设定的时间间隔,你就可以避免上面说的快速点击执行多次操作。
直接先附上该类的所有代码(包名自己加入自己的包名)
import android.util.SparseArray; import android.view.View; /** * @author Voctex 2015-12-24 * @param 有点击时间间隔的点击事件 * */ public abstract class IntervalOnClick implements View.OnClickListener { private long beforeTime = 0; private int interval_time = 700; private SparseArray<Long> sparseArray = new SparseArray<Long>(); /** * @param default interval_time is 700ms */ public IntervalOnClick() { } /** * @param set * click interval_time */ public IntervalOnClick(int interval_time) { this.interval_time = interval_time; } @Override public void onClick(View v) { // TODO Auto-generated method stub long currentTime = System.currentTimeMillis(); beforeTime = sparseArray.get(v.getId()) != null ? sparseArray.get(v .getId()) : 0; if (currentTime - beforeTime >= interval_time) { sparseArray.put(v.getId(), beforeTime = currentTime); IonClick(v); } } public abstract void IonClick(View v); }
该类利用了系统的时间戳、android建议使用的容器类SparseArray和View的id作为key,以及抽象类的特性,这个类比较浅显了,如果有哪里看不懂可以留言
对了,具体使用是这样的:
首先要先定义出来,当然也可以不用定义出来,直接使用
private class IOnClick extends IntervalOnClick { public IOnClick() { super(); // TODO Auto-generated constructor stub } public IOnClick(int interval_time) { super(interval_time); // TODO Auto-generated constructor stub } @Override public void IonClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.fragment_text: break; default: break; } } }
这是定义出来的,使用如下:
fragAcLayout.setOnClickListener(new IOnClick()); //或者如下 fragAcLayout.setOnClickListener(new IOnClick(700));
不用定义的如下:
fragAcLayout.setOnClickListener(new IntervalOnClick() { @Override public void IonClick(View v) { // TODO Auto-generated method stub } }); //或者如下 fragAcLayout.setOnClickListener(new IntervalOnClick(700) { @Override public void IonClick(View v) { // TODO Auto-generated method stub } });
嗯嗯,我感觉我已经写得够详细了,在使用的时候还是出现问题的话,那我真不知道说什么了,觉得好用的请给我个赞哈~~~
相关文章推荐
- 往手机通知栏发送一条通知
- 加大tomcat的java内存
- Java调用C/C++代码-生成java调用的DLL
- Android的ListView控件几种常见的属性
- 实验二(第1题)
- iOS中UIImage存为本地文件,UIImage转换为NSData
- 简单小方法教你如何快速提高记忆力
- 《需求分析和系统设计》读书笔记之三
- 微信JSSDK示例代码 笔记
- 2015
- Android常见内存泄露及优化
- 解决变量名被#define的问题
- 【极客学院】-iOS学习笔记-2-Xcode(安装,创建项目,工作空间)
- 第<1>章 数据引用与匿名存储
- Eclipse运行的timeout问题
- 2015年终小结
- 专访任玉刚:从菜鸟到资深工程师的进阶之路
- 研究技术的方法
- ubuntu discuz mysqli_connect() 不支持 advice_mysqli_connect的解决方法
- Android学习笔记之自定义View(钢琴键盘部件)