您的位置:网站首页 > 源码环境 > 正文

Android View 焦点寻址的爱恨情仇源码你不看看?

类别:源码环境 日期:2018-1-27 21:05:52 人气: 来源:

  Android 系统的智能电视,最近两年基本上越来越火了,而在现在手机 App 开发中,都是使用触摸的模式进行操作,但是在开发智能电视 App 的时候,View 的焦点寻址,就是我们绕不过去的坎。

  在 Android 中,是有一套自己的焦点查找的算法,简单来说,就近原则,就是按方向就近查找下一个符合条件的 View。

  如果我们有对一个 View 焦点控制的需求,需要对这个 View 强制指定它上下左右之后的下一个获取焦点的 View。可以通过 View 的属性来控制,只需要在对应方向上设定我们需要焦点转移的下一个 View 的 ID 即可。

  这些都是最基本的,不是本文的主题。那么如果没有设定这些属性,而 Android 对 View 的就近原则的焦点查找算法,到底是如何实现的呢?

  我们就先从 View 的源码看起,看看它是如何找到“下一个”的 View的,在 View 中,查找下一个应该获取焦点的 View ,使用的方法是focusSearch()。

  它需要传递一个 direction 参数,这个 direction 就是指定获取什么方向上的下一个的焦点。

  而 View 并不会处理焦点寻址的具体逻辑,而是将焦点的查找委托给 mParent 来实现,mParent 是一个接口,它的实现类是 ViewRootImpl。

  如果有对 View 焦点的控制,可以考虑通过设置 View 的属性,还可以通过重写View.focusSearch()方法,来定制 View 焦点的寻址规则。不过一般而言,不推荐重写focusSearch()方法,只使用属性控制也能满足我们的需求。

  我准备了一些我整理的学习资料,包含:Android反编译、算法、设计模式、虚拟机、Linux、Kotlin、Python、爬虫、Web项目源码。如果有兴趣可以私信我。

  

0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

CopyRight 2002-2012 技术支持 源码吧 FXT All Rights Reserved

赞助合作: