Android中經(jīng)常有自定義的點擊事件,但大多數(shù)都只是單擊或者長按事件.
本篇文章對于雙擊事件提供兩種方法:
老土的方法(自己以前的寫法)
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) {
//事件觸發(fā)
//TODO
} else {
//時間過長,重新設(shè)定為單擊事件
time_first = time_second;
}
} else {
//單擊事件,記錄時間
time_first = System.currentTimeMillis();
}
}
大致想法也就是判斷第一次和第二次的點擊事件時間, 然后計算是否符合雙擊的要求, balabala的. 乍一看是沒問題 , 可是遇到有些喪心病狂的需求(三擊, 四擊事件)的時候, 抱歉 TAT 我慫了, 用下面的方法吧.......
有點厲害的寫法(參照Android源碼)
long[] mHints=new long[3];//數(shù)組長度決定點擊事件的次數(shù)
long limit;
private void MultiClick(){
System.arraycopy(mHints, 1, mHints, 0, mHints.length-1);
//相當于數(shù)組的邏輯左移
mHints[mHints.length-1]= SystemClock.uptimeMillis();
//將數(shù)組最后一位設(shè)置為當前時鐘
if (mHints[0]>=(SystemClock.uptimeMillis()-limit)) {
//若0號元素距離系統(tǒng)末位元素的時間不到limit(設(shè)定的連擊時間觸發(fā)閾值)
//三次點擊事件觸發(fā)事件
//TODO
}
}
這種寫法就可以實現(xiàn)多次事件的點擊