自定義雙擊事件
- 點擊事件:在控件上按下,離開厘灼,有瞬間的停留夹纫。
- 雙擊事件:在單位時間內(nèi),雙擊手幢。
- 多擊事件:在單位時間內(nèi)捷凄,多擊(雙擊,三擊围来,四擊等)。
雙擊事件代碼實例
private long firstTimeClick;
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doubleClick();
}
});
public void doubleClick() {
if (firstTimeClick > 0) {
// 表示存在第一次點擊
long secondTimeClick = SystemClock.uptimeMillis();// 獲取當(dāng)前的點擊時間
long dTime = secondTimeClick - firstTimeClick;// 獲取兩次點擊事件的時間間隔
if (dTime < 500) {
// 表示雙擊事件完成
Toast.makeText(getApplicationContext(), "雙擊事件", 0).show();
firstTimeClick = 0;//雙擊事件之后將第一次點擊的時間置為0
return;
}
}
firstTimeClick = SystemClock.uptimeMillis();//初次進(jìn)來firstTimeClick一定為0,所以記錄下第一次點擊的時間戳
}
自定義多擊事件
- 參考:android系統(tǒng)設(shè)置中-->關(guān)于本機(jī)-->Android 版本 3擊即可出現(xiàn)安卓平臺的Acvitity,導(dǎo)入Setting這個項目,查找實現(xiàn)3擊事件的代碼
源碼:
private long[] mHits = new long[3];//該代碼放在成員變量上
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[mHits.length-1] = SystemClock.uptimeMillis();
if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("android",com.android.internal.app.PlatLogoActivity.class.getName());
try {
startActivity(intent);
} catch (Exception e) {
}
}
- 分析
//實現(xiàn)
//src 需要拷貝的原數(shù)組
//srcPos 拷貝數(shù)據(jù)的起始位置
//dst 拷貝的目標(biāo)數(shù)組
//dstPos 位置
//length 目標(biāo)數(shù)組的 目標(biāo)數(shù)組的起始拷貝的長度
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[mHits.length-1] = SystemClock.uptimeMillis();
if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
//在此處實現(xiàn)
Toast.makeText(context,"3擊事件",0).show();
}
分析實現(xiàn)原理:
long[] mHits = new long[3];
還未點擊時: 0 0 0
第一次點擊時 0 0 1400 0>=1400-500=900不成立了
第二次點擊時 0 1400 1500 0>=1500-500=1000不成立了
第三次點擊 1400 1500 1700 1400>1700-500=1200成立
**日后想要實現(xiàn)4擊事件就在mHits的參數(shù)改為4即可 **