一步一步學習Android TV/盒子開發(一)
阿新 • • 發佈:2018-11-06
寫在前面的話:
本人做了幾年的機頂盒和Android電視上的應用開發,寫這些文章只是為了讓初次接觸大屏開發的同學能夠快速上手。
TV端因為沒有觸控操作,只有遙控操作,所以焦點處理、控制以及按鍵監聽是其主要特點。
焦點處理
設定可獲取焦點
佈局中需要設定某個控制元件可獲取焦點需要加上:
android:focusable="true"
程式碼中:
view.setFocusable(true);
焦點監聽
view.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { // 獲取焦點時操作,常見的有放大、加邊框等 } else { // 失去焦點時操作,恢復預設狀態 } } });
在已知其他View ID的情況下設定下一個焦點:
佈局檔案中:
android:nextFocusDown="@id/button1"
android:nextFocusUp="@id/button2"
android:nextFocusLeft="@id/button3"
android:nextFocusRight="@id/button4"
程式碼中:
view.setNextFocusDownId(R.id.button1); view.setNextFocusUpId(R.id.button2); view.setNextFocusLeftId(R.id.button3); view.setNextFocusRightId(R.id.button4);
按鍵監聽
Activity中有onKeyDown(…),可以攔截按鍵處理相關操作,如按兩次返回鍵退出等。
View獲取焦點後捕獲按鍵的方式如下:
view.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { // 這種情況就是當按下遙控器返回鍵時 return true; } return false; } });
常用的遙控器按鍵:
KeyEvent.KEYCODE_BACK // 返回鍵
KeyEvent.KEYCODE_DPAD_DOWN // 下鍵
KeyEvent.KEYCODE_DPAD_UP // 上鍵
KeyEvent.KEYCODE_DPAD_LEFT // 左鍵
KeyEvent.KEYCODE_DPAD_RIGHT // 右鍵
KeyEvent.KEYCODE_MENU // 選單鍵
KeyEvent.KEYCODE_SETTINGS // 設定鍵
跟手機開發一樣,HOME鍵監聽不到