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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容