Android 遥控器焦点

    在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()。只要完成了这些就能让遥控器按照我们的意愿去实现操作了。

猜你喜欢

转载自blog.csdn.net/weixin_39302050/article/details/84308935