Android双击,连续多次点击事件判断
2015-08-14 15:31
1056 查看
常见场景:有时候用户双击控件后,才希望客户端响应。
原理:用户点击一次后,判断最后一次点击距离第一次的时间,如果小于500毫秒,则为双击,同理,三次点击,四次点击……
看看Android自身是如何处理这样的事件的:
long[] mHits = new long[3];
public void click(View view){
System. arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[ mHits. length-1] = SystemClock. uptimeMillis();
if ( mHits[0] >= (SystemClock. uptimeMillis()-500)) {
Toast. makeText(this,"hello world from TreeClcik", 1).show();
}
}
好了,三击事件已经写完了,只要把数组长度改成2,就是双击事件了,接下来分析一下代码。
1:定义一个数组,几击就定义数组长度为几。
2:开始数组每个元素都是默认的0,点击一下后,把数组的每个元素都向前copy一位,把当前点击的时间放入数组最后一位。
例:
第一次click: 0 0 0;
第二次click: 0 111 112;
第三次click 111 112 113;
通过判断数组第一位的值是不是大于最后一次点击时间减于我们设置的时间。
原理:用户点击一次后,判断最后一次点击距离第一次的时间,如果小于500毫秒,则为双击,同理,三次点击,四次点击……
看看Android自身是如何处理这样的事件的:
long[] mHits = new long[3];
public void click(View view){
System. arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[ mHits. length-1] = SystemClock. uptimeMillis();
if ( mHits[0] >= (SystemClock. uptimeMillis()-500)) {
Toast. makeText(this,"hello world from TreeClcik", 1).show();
}
}
好了,三击事件已经写完了,只要把数组长度改成2,就是双击事件了,接下来分析一下代码。
1:定义一个数组,几击就定义数组长度为几。
2:开始数组每个元素都是默认的0,点击一下后,把数组的每个元素都向前copy一位,把当前点击的时间放入数组最后一位。
例:
第一次click: 0 0 0;
第二次click: 0 111 112;
第三次click 111 112 113;
通过判断数组第一位的值是不是大于最后一次点击时间减于我们设置的时间。
相关文章推荐
- Android应用开发原理之从源码分析看Linearlayout、Relativelayout,Framelayout的布局差别(Relativelayout分析)
- Android API的Activity类
- Android 中比 Timer 更好方法
- Activity对象的onCreate方法真是Android程序的入口吗?
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android中的帧动画与补间动画的使用
- android给子线程传值
- Android训练课程(Android Training) - 测试你的Android Activity
- Android Studio 学习笔记(1)
- Android屏幕适配总结
- Android指南 - 主题
- Android指南 - 样式和主题
- Android训练课程(Android Training) - 构建你的第一个应用
- Android训练课程(Android Training) - 添加活动栏(使用action bar)
- Android设计 - 图标设计概述(Iconography)
- android开发(41) Fragment中使用POP_BACK_STACK_INCLUSIVE达到一次跳转到栈底。类似Activity的 采用FLAG_ACTIVITY_CLEAR_TOP
- Android开发,在Fragment中,隐藏或关闭软键盘(虚拟键盘)的方法
- Android开发,使用背景图(xml drawable)为view 设置边框
- Android开发,在Activity启动时,默认隐藏软键盘。和遮挡Edittext时的处理