Android连续点击事件处理
核心方法:System.arraycopy()
:将一个数组的部分复制给另一个数组
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
参数说明:
Object src |
源数组 |
---|---|
int srcPos |
源数组复制起始位置 |
Object dest |
目标数组 |
int destPos |
目标数组起始位置 |
int length |
复制长度 |
代码实现:
/**
* 连续点击相关设置
*/
private static final int CLICK_COUNT = 3; //连续点击的次数
private static long DURATION = 1500; // 完成连续点击持续的时间
private long[] mClickArray = new long[CLICK_COUNT]; // 保存点击时间的数组
/**
* 执行连续点击事件
*/
public void executeContinuousClickEvent(){
// 每次点击让数组前进一位
System.arraycopy(mClickArray, 1, mClickArray, 0, mClickArray.length - 1);
// 为数组的最后一个位置赋值(SystemClock.uptimeMillis()表示系统开机到现在的时间总数,单位是ms)
mClickArray[mClickArray.length - 1] = SystemClock.uptimeMillis();
/** 当用户完成3次点击时,判断一下完成三次点击使用的时间是否在DURATION范围之内
click1 click2 click3
↓ ↓ ↓
-------|------------------------------|----------> 时间轴(SystemClock.uptimeMills())
|<—————————— DURATION ————————>|
*/
if(mClickArray[0] >= SystemClock.uptimeMillis() - DURATION){
// 完成连续点击事件后初始化数组
mClickArray = new long[CLICK_COUNT];
XToast.showError("连续点击");
}
}