美文网首页Android TVAndroid TVAndroid TV开发
android TV盒子开发心得(一)

android TV盒子开发心得(一)

作者: 一个乐子人 | 来源:发表于2016-10-09 11:19 被阅读1729次

    今天给大家介绍一下本人在开发AndroidTV APP的时候所遇到的一些问题及心得体会,希望能帮助各位解决问题

    首先,简单介绍一下TV开发和手机开发的不同之处:

    1.我们在开发TV的时候,经常会遇到焦点的处理问题,如何去移动焦点?如何让焦点定位在自己设定的控件上?

    移动焦点:在这里我们需要使用onKeyDown()的方法,进行一个焦点的上下移动的处理,onKeyDown的使用方法网上有详细介绍

    焦点定位:img.requestFocus(); 在xml中我们还需要设置一个android:focusable="true"的属性,当然你还有需要去设置一下获取焦点的背景色

    2.在手机上我们一般会使用viewPager+fragment的控件来作为整个APP的布局方式,但是,在TV开发中是不提倡使用ViewPager的,因为在TV中界面的移动是依靠焦点的变化,举一个简单 的例子,我们有两个Fragment界面,在两个Fragmnet界面分别使用recyclerView加载了一定的网络数据,当我们的焦点在recyclerView 上的item上时,将焦点移动至recyclerView最右侧时,继续按右键,那么这个时候fragmen就会进行切换,这样的话是不符合TV开发的需求的

    3.在TV开发中,使用的setOnFocusChangeListener()方法,是用来监听焦点的改变的,一般我们用来监听控制Fragment的移动

    4.在开发中有时可能会遇到焦点找不到的情况,,比如说我们使用RecyclerView来加载数据,这时需要在xml中,添加android:descendantFocusability="afterDescendants"这一行代码,至于这行代码的意思网上有介绍,大致上就是说父控件和子控件之间的焦点获取的关系,

    5,同样使用Recycelrview加载数据,当焦点向下移动时recyclerView就会向下滑动,这个时候,就会发生焦点不在当前页面上的情况,当然这种情况也要看自己的布局任如何写的,要是想检测在RecycelrView中当前获取焦点的是哪一个item的话,只需要在onBind...()中加上setOnFocusChangeListener()方法就OK了

    以上是一点关于本人TV 开发中遇到的问题和解决办法,希望能够帮到大家,另外,android TV的开发其实是有他专门的开发框架的,感兴趣的可以自己研究,以上的方法对于有过手机开发的人来说,更容易上手一些,也简单一些,下次再更新其它的内容

    相关文章

      网友评论

      • yask:问下作者,电视的分辨率比手机高,加载高分辨率的大图片会不会oom
      • f57397fc782b:android TV不使用viewPager+fragment的话,使用什么框架,有什么推荐的吗?谢谢!
        一个乐子人:@紫川_061d 框架的话你去github上面看一下,搜索antroidTV
      • 姑娘请别为难小僧:楼主 recycleview 怎么拦截focus 不然recycleview item自动获取
        一个乐子人:手动设置recyclerView不获取焦点

      本文标题: android TV盒子开发心得(一)

      本文链接:https://www.haomeiwen.com/subject/wjmpyttx.html