編輯:關於Android編程
原文地址:http://android.xsoftlab.net/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()檢查你所關心的組合按鍵是否被按下了。
舉個例子,下面是onKeyUp()方法的改良版本,增添了一些專門對於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); } }
Paint類介紹Paint即畫筆,在繪制文本和圖形用它來設置圖形顏色, 樣式等繪制信息。1.圖形繪制setARGB(int a,int r,int g,int b);設置
Toolbar在前面的博文《Android開發筆記(二十)頂部導航欄》中,我們學習了ActionBar的用法,可是ActionBar著實是不怎麼好用,比如文字風格不能定制
超詳細解析定位坐標—LatLng定位中用得最多的是坐標(也就是經緯度),那麼我們首先搞清楚什麼是坐標:LatLng 類:地理坐標基本數據結構。 描述
今天我將分享由BiliBili開源的Android彈幕框架(DanmakuFlameMaster)的學習經驗。我是將整個框架以model的形式引入項目中的,這樣更方便的觀