简单描述一下要实现的:遥控器控制GridView右键到第一横最后一个item再次右键跳转到第二横的问题
正常情况下,机顶盒GridView中的Item中的控件获取不到焦点,焦点都是在Item上
当GridView中的子Item里面的控件需要获取焦点时,设置GridView的属性android:descendantFocusability="afterDescendants"
这样GridVIew中的子Item中的控件就能获取到焦点了
一个按键有两个触发点,一是up,一是down,如果需要指定焦点,使用view.requestFocus(),而且需要在down上执行,因为up时,系统已经定位新的焦点了.再执行就未必是想要的结果.
重写系统的的方法:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyCode=event.getKeyCode();
if (event.getAction()==KeyEvent.ACTION_UP) {
up事件,这里多数情况不需要处理.
} else {down事件
或许可以直接覆盖onKeyDown方法,而不是这个.
if(keyCode==KeyEvent.KEYCODE_DPAD_UP){
} else if (keyCode==KeyEvent.KEYCODE_DPAD_LEFT) {
//处理事件
return true;//该事件已被处理,flase调用系统方法
} else if (keyCode==KeyEvent.KEYCODE_DPAD_RIGHT) {
//处理事件
return true;
} else if (keyCode==KeyEvent.KEYCODE_DPAD_DOWN) {
} else if (keyCode==KeyEvent.KEYCODE_DPAD_CENTER||keyCode==KeyEvent.KEYCODE_ENTER) {
}
return super.dispatchKeyEvent(event);
}
这是主要处理的遥控器的几个方向,
此方法对该事图层有用