首先,來解釋一下這三個事件。
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