在Android开发中,我们经常遇到的是手机,在手机上,我们看到哪就用手指头戳到哪就OK了。但是当我们遇到了Android电视时,这时候,我们用手去戳电视屏是没有用的。这时候就有人会说了,电视都是用遥控器的,谁会用手去戳啊。接下来在这里我们就说一下,Android开发中是怎么实现遥控器监听的。深层次的View的点击事件原理等,笔者经验有限,先不多说,也许在今后的日子里,随着经验的增加,会在博客里分享心得。今天在这里,主要分享的是从功能效果方面出发的。
我们说要想实现遥控器监听,主要离不开两个监听事件。一个是OnKeyDown()方法,还有一个就是要实现OnFocusChangeListener监听器。下面就是想分享一下怎么综合这两个监听,让遥控器按我们的意图实现遥控功能。
首先我们要先实现OnFocusChangeListener,笔者采用的是内部类的形式,代码如下:
class MyFocusChangeListener implements View.OnFocusChangeListener{
@Override
public void onFocusChange(View v, boolean hasFocus) {
switch (v.getId()){
case R.id.控件Id1:
if(hasFocus){
//Id1控件得到焦点时的业务逻辑
}else{
//Id1控件失去焦点时的业务逻辑
}
break;
case R.id.控件Id2:
if(hasFocus){
//Id2控件得到焦点时的业务逻辑
}else{
//Id2控件失去焦点时的业务逻辑
}
break;
}
}
}
其次我们实现OnKeyDown()方法去监听遥控器的按键,去改变焦点的移动代码如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode){
case KeyEvent.遥控器的按键:
if(view1.hasFocuse()){
//假定我们实例化MyFocusChangeListener的实例对象为myListener
myListener.(view2,true)
}
break;
}
return super.onKeyDown(keyCode, event);
}
通过上面的代码,我们就成功的把view1的焦点移动到了view2上。另外就是,一定要记得在我们进行布局时,一定要把view控件属性上加上focusable=true这样的属性,另外在OnCreate()方法里,为我们最开始默认的控件添加这样一个方法,假如说最开始默认的焦点在view1上,则添加view1.FocusRequ()。只要完成了这些就能让遥控器按照我们的意愿去实现操作了。