android 處理按鍵動作
編寫:zhaochunqi - 原文:http://developer.android.com/training/keyboard-input/commands.html
當使用者選中一個可編輯的文字 view(如 EditText 元件),而且使用者連線了一個實體鍵盤時,所有輸入由系統處理。然而,如果我們想接管或直接處理鍵盤輸入,那麼可以通過實現 KeyEvent.Callback 介面的回撥方法,如 onKeyDown() 和 onKeyMultiple() 來完成上述目的。
因為 Activity 和 View 類都實現了 KeyEvent.Callback 介面,所以通常我們應該在這些類的繼承中重寫回撥方法。
Note: 當使用 KeyEvent 類和相關的 API 處理鍵盤事件時,我們應該期望這種鍵盤事件只從實體鍵盤發出。我們永遠不應該依賴從一個軟輸入法(如螢幕鍵盤)來接收按鍵事件。
處理單個按鍵事件
處理單個的按鍵點選,需要適當地實現 onKeyDown() 或 onKeyUp()。通常,我們使用 onKeyUp() 來確保我們只接收一個事件。如果使用者點選並按住按鈕不放,onKeyDown() 會被呼叫多次。
舉例,這個實現響應一些鍵盤按鍵來控制遊戲:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_D:
moveShip(MOVE_LEFT);
return true;
case KeyEvent.KEYCODE_F:
moveShip(MOVE_RIGHT);
return true;
case KeyEvent.KEYCODE_J:
fireMachineGun();
return true;
case KeyEvent.KEYCODE_K:
fireMissile();
return true;
default:
return super.onKeyUp(keyCode, event);
}
}
處理修飾鍵
為了對修飾鍵(例如將一個按鍵與 Shift 或者 Control 鍵組合)進行迴應,我們可以查詢 KeyEvent 來傳遞到回撥方法。一些方法,如 getModifiers() 和 getMetaState(),提供一些關於修飾鍵的資訊。然而,最簡單的解決方案是用像 isShiftPressed() 和 isCtrlPressed() 等方法,檢查我們關心的修飾鍵是否正在被按下。
例如,有一個 onKeyDown() 的實現,當Shift鍵和一個其他按鍵按下時,做一些額外的處理:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
...
case KeyEvent.KEYCODE_J:
if (event.isShiftPressed()) {
fireLaser();
} else {
fireMachineGun();
}
return true;
case KeyEvent.KEYCODE_K:
if (event.isShiftPressed()) {
fireSeekingMissle();
} else {
fireMissile();
}
return true;
default:
return super.onKeyUp(keyCode, event);
}
}
轉自:http://hukai.me/android-training-course-in-chinese/input/keyboard-input/commands.html
相關文章
- 鍵盤亂鍵怎麼處理 電腦鍵盤按鍵錯亂
- Android處理按鈕重複點選Android
- Android鍵盤皮膚衝突 佈局閃動處理方案Android
- iOS --按鈕 處理iOS
- android 按鍵聲音Android
- 關於處理按鍵長按不用onKeyLongPress的另一種解決方案
- Android優雅地處理按鈕重複點選Android
- Android 監聽home鍵的動作Android
- android按鍵模擬測試Android
- 通過處理按鍵模擬加速度,剎車等功能
- 處理鍵盤通知
- 【android】android使用命令模擬按鍵Android
- 按鍵中斷驅動程式
- 傑裡之不執行對箱按鍵同步訊息處理方法【篇】
- android 獲得後退鍵按事件Android事件
- PPT製作動感按鈕
- ZYKeyboardUtil 全自動處理鍵盤遮擋事件事件
- LOTO示波器動作程式設計功能(命令批處理)程式設計
- android處理webserviceAndroidWeb
- jQuery為動態新增的按鈕註冊事件處理函式jQuery事件函式
- 移動端VUE點選、滑動和長按等事件處理(自定義指令)Vue事件
- android處理單擊雙擊和滑動事件Android事件
- android處理2個ScrollView聯動問題AndroidView
- android典型程式碼系列(二十二)------按鍵使上面的EditText抖動Android
- 啟動按ctrl鍵 遮蔽自動隱藏功能
- 按鍵的檢測與去抖動
- Oracle非關鍵資料檔案作業系統誤刪除處理Oracle作業系統
- 實現android按下Enter鍵便隱藏輸入鍵盤Android
- Mac按鍵Mac
- 按鍵原理
- Android高通平臺處理器間通訊驅動Android
- JDBC【PreparedStatment、批處理、處理二進位制、自動主鍵、呼叫儲存過程、函式】JDBC儲存過程函式
- 個人發展關鍵動作
- 三行程式碼按鍵消抖 獨立按鍵 矩陣按鍵 長按 短按 雙擊行程矩陣
- Android按下返回鍵,將應用退到後臺Android
- mac git命令按tab鍵自動補全MacGit
- Win10電腦不小心按到W鍵出現INK工作區怎麼處理Win10
- 關於對話方塊介面上按回車和ESC鍵退出問題的處理 (轉)