Android 多次点击事件的触发方法

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
      }
}         

这种写法就可以实现多次事件的点击

你可能感兴趣的:(Android 多次点击事件的触发方法)