android_自定義多擊事件

自定義雙擊事件

  • 點(diǎn)擊事件:在控件上按下,離開(kāi),有瞬間的停留。
  • 雙擊事件:在單位時(shí)間內(nèi),雙擊。
  • 多擊事件:在單位時(shí)間內(nèi),多擊(雙擊,三擊,四擊等)。

雙擊事件代碼實(shí)例

private long firstTimeClick;
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        doubleClick();
    }
});
public void doubleClick() {
         if (firstTimeClick > 0) {
             // 表示存在第一次點(diǎn)擊
             long secondTimeClick = SystemClock.uptimeMillis();// 獲取當(dāng)前的點(diǎn)擊時(shí)間
             long dTime = secondTimeClick - firstTimeClick;// 獲取兩次點(diǎn)擊事件的時(shí)間間隔
                 if (dTime < 500) {
                 // 表示雙擊事件完成
                 Toast.makeText(getApplicationContext(), "雙擊事件", 0).show();
                 firstTimeClick = 0;//雙擊事件之后將第一次點(diǎn)擊的時(shí)間置為0
                 return;
                 }
         }
         firstTimeClick = SystemClock.uptimeMillis();//初次進(jìn)來(lái)firstTimeClick一定為0,所以記錄下第一次點(diǎn)擊的時(shí)間戳
    }

自定義多擊事件

  • 參考:android系統(tǒng)設(shè)置中-->關(guān)于本機(jī)-->Android 版本 3擊即可出現(xiàn)安卓平臺(tái)的Acvitity,導(dǎo)入Setting這個(gè)項(xiàng)目,查找實(shí)現(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) {
                }
}
  • 分析
    //實(shí)現(xiàn)
    //src 需要拷貝的原數(shù)組
    //srcPos 拷貝數(shù)據(jù)的起始位置
    //dst 拷貝的目標(biāo)數(shù)組
    //dstPos 位置
    //length 目標(biāo)數(shù)組的 目標(biāo)數(shù)組的起始拷貝的長(zhǎng)度
    System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
    mHits[mHits.length-1] = SystemClock.uptimeMillis();
    if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
    //在此處實(shí)現(xiàn)
    Toast.makeText(context,"3擊事件",0).show();
    }

分析實(shí)現(xiàn)原理:
long[] mHits = new long[3];
還未點(diǎn)擊時(shí): 0 0 0
第一次點(diǎn)擊時(shí) 0 0 1400 0>=1400-500=900不成立了
第二次點(diǎn)擊時(shí) 0 1400 1500 0>=1500-500=1000不成立了
第三次點(diǎn)擊 1400 1500 1700 1400>1700-500=1200成立

**日后想要實(shí)現(xiàn)4擊事件就在mHits的參數(shù)改為4即可 **

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容