android tv 焦点居中自定义listview控件的实现

来源:互联网 发布:淘宝客服招聘可信吗 编辑:程序博客网 时间:2024/05/14 16:55

因为项目需要,花了一天做了一个自定义listview,和google官方效果图上的控件类似,效果图:


即焦点始终在屏幕中央,焦点选中的item被放大,且颜色被改变,遥控器可以指挥listview上下滚动并且选择,要做到这个首先要想清楚思路:

核心思想

1、中间的“焦点”不是真实的焦点,是画出来的。

2、移动listview使用的方法是listview.smoothScrollBy,但当选择到前几个item或后几个item时,会有留白的情况,如图,为了解决这个问题,我有想过整体移动listview,最后由于越搞越麻烦而放弃,在这里使用了控制adapter,使其产生空白选项,这样不用移动listview也能解决此问题。

3、对于移动状态进行监听,发现移动产生后改变item中字体的效果。


对于以上的核心思想,做几点解释:

1、我们使用listview.setSelection()方法使焦点移动到想要的item上,但是频繁调用这个方法会让焦点出现闪烁的情况,尤其是在自定义了焦点的样式后,这种情况比较明显。为了保证在移动时控件的美观,我们使用绘制矩阵的方式,将焦点画出来。


下面上代码,该有注释的地方都有:(周一上代码,现在手上没有)


0 0
原创粉丝点击