1)onKeyDown方法,該方法是接口KeyEvent.Callback中的抽象方法,所有的View全部實(shí)現(xiàn)了該接口并重寫了該方法,該方法用來捕捉手機(jī)鍵盤被按下的事件。
2)參數(shù)keyCode,該參數(shù)指的是被按下的鍵的鍵盤碼,手機(jī)鍵盤中每個(gè)按鈕都會(huì)有其對應(yīng)的鍵盤碼,在應(yīng)用程序都是通過鍵盤碼才知道用戶按下的是哪個(gè)鍵。
3)當(dāng)用戶按下按鍵時(shí),系統(tǒng)會(huì)自動(dòng)將事件封裝成KeyEvent對象供應(yīng)用程序使用。按鍵事件KeyEvent按鍵事件有多種常量類型,比如 KEYCODE_BACK
4)返回值,該方法的返回值為一個(gè)boolean類型的變量,當(dāng)返回true時(shí),表示已經(jīng)完整地處理了這個(gè)事件,并不希望其他的回調(diào)方法再次進(jìn)行處理,而當(dāng)返回false時(shí),表示并沒有完全處理完該事件,更希望其他回調(diào)方法繼續(xù)對其進(jìn)行處理,例如Activity中的回調(diào)方法。參考文本
private voidsetFocus() {//獲取焦點(diǎn)
et_cardno.setFocusable(true);
et_cardno.setFocusableInTouchMode(true);
et_cardno.requestFocus();
}
//實(shí)現(xiàn)的基本原理就是,當(dāng)按下BACK鍵時(shí),會(huì)被onKeyDown捕獲,判斷是BACK鍵,則執(zhí)行voidsetFocus方法。
@Override
public booleanonKeyDown(intkeyCode, KeyEvent event) {
LogUtils.d("TAG","=========================== 調(diào)用onKeyDown ");
setFocus();
return super.onKeyDown(keyCode, event);
}