onBackPressed、onKeyDown和onKeyUp這三個事件的區(qū)別

首先,來解釋一下這三個事件。

onKeyDown:是當(dāng)某個按鍵被按下是觸發(fā)。所以也有人在點擊返回鍵的時候去執(zhí)行該方法來做判斷。(該方法只是android 1.0~ android 2.1)

捕獲判斷代碼:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event)? {

if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同時沒有重復(fù)

Toast.makeText(ml78.this,"返回鍵Back鍵測試",1).show();

return true;

}

return super.onKeyDown(keyCode, event);

}


onKeyUp:這個方法是當(dāng)某個按鍵被按下后,抬起的時候執(zhí)行,其實跟onKeyDown沒什么差別

onBackPressed:在android 2.0開始多出了關(guān)于返回鍵的單獨的事件方法,可以在該方法里面執(zhí)行當(dāng)點擊返回鍵的時候做什么...所以,后期都是用這個方法比較多。

如果要考慮版本兼容的話,代碼可這么寫:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// 是否觸發(fā)按鍵為back鍵

if (keyCode == KeyEvent.KEYCODE_BACK) {

onBackPressed();

return true;

} else {// 如果不是back鍵正常響應(yīng)

return super.onKeyDown(keyCode, event);

}

}

點擊兩次返回鍵退出,防止誤操作


//退出時間

privatelongcurrentBackPressedTime= 0;

//退出間隔

privatestaticfinalintBACK_PRESSED_INTERVAL= 2000;

//重寫onBackPressed()方法,繼承自退出的方法

@Override

publicvoidonBackPressed() {

//判斷時間間隔

if(System.currentTimeMillis()-currentBackPressedTime>BACK_PRESSED_INTERVAL) {

currentBackPressedTime= System.currentTimeMillis();

Toast.makeText(this,"再按一次返回鍵退出程序", Toast.LENGTH_SHORT).show();

}else{

//退出

finish();

}

}

文章部分內(nèi)容轉(zhuǎn)載自:http://www.csdn123.com/html/mycsdn20140110/4c/4cd69cc9f3b442e5c6eb7f9eaf49ef80.html

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

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

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