2017.06.15 11:32:46字數 320閱讀 200
自定義雙擊事件
- 點擊事件:在控件上按下,離開,有瞬間的停留。
- 雙擊事件:在單位時間內,雙擊。
- 多擊事件:在單位時間內,多擊(雙擊,三擊,四擊等)。
雙擊事件代碼實例
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();// 獲取當前的點擊時間
long dTime = secondTimeClick - firstTimeClick;// 獲取兩次點擊事件的時間間隔
if (dTime < 500) {
// 表示雙擊事件完成
Toast.makeText(getApplicationContext(), "雙擊事件", 0).show();
firstTimeClick = 0;//雙擊事件之後將第一次點擊的時間置爲0
return;
}
}
firstTimeClick = SystemClock.uptimeMillis();//初次進來firstTimeClick一定爲0,所以記錄下第一次點擊的時間戳
}
自定義多擊事件
- 參考:android系統設置中-->關於本機-->Android 版本 3擊即可出現安卓平臺的Acvitity,導入Setting這個項目,查找實現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) {
}
}
- 分析
//實現
//src 需要拷貝的原數組
//srcPos 拷貝數據的起始位置
//dst 拷貝的目標數組
//dstPos 位置
//length 目標數組的 目標數組的起始拷貝的長度
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[mHits.length-1] = SystemClock.uptimeMillis();
if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
//在此處實現
Toast.makeText(context,"3擊事件",0).show();
}
分析實現原理:
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成立
**日後想要實現4擊事件就在mHits的參數改爲4即可 **