本文总结了Android TV开发中的按键事件和焦点处理,TV端的开发不同于手机开发,主要区别在于焦点的处理,常常会用到手机端很少用到的开发接口。了解这些不同的接口和区别,有助于很快的上手TV端的开发。
文章目录1.KeyEvent事件keyEvent2.KeyEvent事件分发dispatchKeyEvent()3.焦点处理 Focus焦点放大处理4.adb input 常见命令5.总结
1.KeyEvent事件
keyEvent
源码位于android.view下,包装管理所有按键有关输入的事件体系,KeyEvent和MotionEvent的分发流程一样,都是InputEvent的子类,都是从Activity开始的,KeyEvent主要有以下事件类型:
KeyEvent.KEYCODE_DPAD_UP; 上
KeyEvent.KEYCODE_DPAD_DOWN; 下
KeyEvent.KEYCODE_DPAD_LEFT;左
KeyEvent.KEYCODE_DPAD_RIGHT;右
KeyEvent.KEYCODE_DPAD_CENTER;确定键
KeyEvent.KEYCODE_DPAD_RIGHT; 右
KeyEvent.KEYCODE_XXX:数字键 (xx表示你按了数字几)
KeyEvent.KEYCODE_BACK; 返回键
KeyEvent.KEYCODE_HOME;房子键
KeyEvent.KEYCODE_A: A-Z,26个字母
KeyEvent.KEYCODE_MENU菜单键。
一般使用方法如下所示:
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
//模拟器测试时键盘中的的Enter键,模拟ok键(推荐TV开发中使用蓝叠模拟器)
case KeyEvent.KEYCODE_ENTER:
break;
case KeyEvent.KEYCODE_DPAD_CENTER:
Toast("你按下中间键");
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
Toast("你按下下方向键");
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
Toast("你按下左方向键");
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
Toast("你按下右方向键");
break;
case KeyEvent.KEYCODE_DPAD_UP:
Toast("你按下上方向键");
break;
}
return super.onKeyDown(keyCode, event);
}
或者可以复写onKeyUp();
2.KeyEvent事件分发
dispatchKeyEvent()
主要处理按键的分发。avtivity和view都拥有此方法,两种有所区别的,实际都是交给DecorView来处理。
public boolean dispatchKeyEvent(KeyEvent event) {