Android中经常有自定义的点击事件,但大多数都只是单击或者长按事件.
本篇文章对于双击事件提供两种方法:
老土的方法(自己以前的写法)
long time_first = 0;
long time_second = 0;
long limit; //双击要求的间隔
public void doubleClick() {
if (time_first != 0) {
//已双击
time_second = System.currentTimeMillis();
long time = (time_second - time_first) / 1000;
if (time <= limit) {
//事件触发
//TODO
} else {
//时间过长,重新设定为单击事件
time_first = time_second;
}
} else {
//单击事件,记录时间
time_first = System.currentTimeMillis();
}
}
大致想法也就是判断第一次和第二次的点击事件时间, 然后计算是否符合双击的要求, balabala的. 乍一看是没问题 , 可是遇到有些丧心病狂的需求(三击, 四击事件)的时候, 抱歉 TAT 我怂了, 用下面的方法吧.......
有点厉害的写法(参照Android源码)
long[] mHints=new long[3];//数组长度决定点击事件的次数
long limit;
private void MultiClick(){
System.arraycopy(mHints, 1, mHints, 0, mHints.length-1);
//相当于数组的逻辑左移
mHints[mHints.length-1]= SystemClock.uptimeMillis();
//将数组最后一位设置为当前时钟
if (mHints[0]>=(SystemClock.uptimeMillis()-limit)) {
//若0号元素距离系统末位元素的时间不到limit(设定的连击时间触发阈值)
//三次点击事件触发事件
//TODO
}
}
这种写法就可以实现多次事件的点击