一:使用场景
Android本身内置了点击、双击事件,但是某些时候,我们可能需要多击事件。
例如:某个秘密入口,为了避免用户误操作点击、双击到了触发开关而进入到不该被用户看到的页面,我们可以为入口控件设置三击事件,点击三次才能进入。
二:核心代码
//1:点击时刻采样数组:记录每次点击的时刻。数组长与事件的点击次数一致,三击事件就设为3
long[] mHits = new long[3]; //2:为入口控件设置三击事件
控件.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1); //数组复制:每点击一下,数组数据前移一位
mHits[mHits.length-1] = SystemClock.uptimeMillis(); //多击事件的判断:多次点击后,数组的第一位保存着多击事件的第一下点击的时间。如果最新点击时间与第一下点击时间间隔小于0.5秒,则判断为多击时间。
if (mHits[0] >= (SystemClock.uptimeMillis()-500)) { //注意:这里的时间间隔,要参照多击事件的点击次数来定,3击大概0.5秒之内,5击大概要0.8~1秒。
//todo:多击事件的响应操作 mHits = null;
mHits = new long[3]; //新开一个数组用于采样下次多击事件
}
}
});