今天给大家介绍一下本人在开发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的开发其实是有他专门的开发框架的,感兴趣的可以自己研究,以上的方法对于有过手机开发的人来说,更容易上手一些,也简单一些,下次再更新其它的内容
网友评论