机顶盒开发中HorizontalGridView切换item时丢失焦点
最近在做机顶盒开发,所以必然用到了HorizontalGridView控件,然后稍微了解了一下,嗯,我写的也只是我知道的东西,其他也没有研究,以下写的东西默认环境也是机顶盒。
HorizontalGridView与VerticalGridView是继承自leanback的BaseGridView的,而BaseGridView是继承自RecyclerView的,实现了列表的功能;与RecyclerView不同的是,HorizontalGridView是不需要设置layoutManager的,直接设置adapter就可以了。
HorizontalGridView与RecyclerView的不同点:
1、HorizontalGridView默认实现了焦点记录的功能,因为HorizontalGridView多用于顶部tab,所以肯定会配合viewpager和Fragment使用。如果使用RecyclerView的话,进入app时焦点默认在RecyclerView的item上,当按遥控器下键的时候焦点移动到和当前item关联的Fragment里。这时item是失去焦点的状态,再次按遥控器上键或者返回键的时候Fragment失去焦点,item要重新获取焦点,但是获取焦点的item很有可能就不是刚才的那个了,这就导致要多写很多代码来做记录和判断。如果使用HroizontalGridView的话就不会出现这个问题了,当你按上键的时候只需要给HorizontalGridView请求以下焦点就可以了,焦点会自动移动到最后一次失去焦点的item上。
2、当多个item横向排列大于一屏时,获得焦点的item始终在屏幕中间。这个就不说了,作用很明朗
3、当item获得焦点时,当前item总是在最后绘制。这个我目前还没有用到,但是这个功能的好处可以想象的是,常见的电视app页面,当焦点移动到某一个item上时,这个item会放大,失去焦点时会缩小,嗯,大部分电视app都是这个做法,这么做有时候会出现一个问题,item是顺序绘制的,前面的item放大时可能会被后面的item遮挡,但HorizontalGridView的这个实现就可以解决这个问题。
啊~~~~~~~写了一堆与主题无关的东西0.0
之前做测试都是在5.1版本的机顶盒上做测试,跑起来没啥毛病,前几天拿回来一个4.4的,然后sdk出问题,HorizontalGridView也出问题,左右切换的时候item焦点丢失,再按上下键的时候焦点就会出现在其他控件上,查找了一下发现其实并不是个问题,只能说是一个马虎失误,如图,是HorizontalGridView的item页面
机顶盒开发和手机开发不一样的是要给需要获取焦点的控件加一句android:focusable = "true",啥意思呢,就是设置这个控件可以获取焦点,我在父布局和子控件上都加了一句,所以出现左右切换丢失焦点的问题,具体原理还没去研究,去掉子控件的这句话就可以了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!