android_自定義多擊事件

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即可 **

 

轉自:https://www.jianshu.com/p/eba0562239d4 侵刪

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章