本文主要目的: 探究Android界面显示机制,在Android视图等级方面提出了个人见解,以及发现WindowsManager的真正用图是对Windows上的DecorView进行管理,而不是对Window进行管理。解释了requestWindowFeature(Window.FEATURE_NO_TITLE)用来设置全屏显示一定要放在setContentView()方法前面才会生效。还有自定义view的onMeasure、onLayout和onDraw方法的调用时机。 如果想展示一个界面,Android工程师的一般工作流程是,根据产品的原型图,设计布局文件,然后在Activity中的setContentView中加载布局文件,初始化各种view,编译运行,打开这个Activity的时候,就可以查看到布局文件的视图。 多数程序员认为的Android的视图等级多数程序员认为的Android的视图等级 这个图应该很常见,基本上所有的资料在介绍视图等级的时候都会拿出上图来进行介绍介绍DecorView是**view,巴拉巴拉。。。 不过关于视图等级用这幅图进行表示,我一点都不认同,可以这么说,这样划分是错误的(仅仅是个人见解,有讨论的欢迎一起讨论) 为什么这么说呢? View的中文意思是视图,既然要讲视图等级,而且DecorView又是**视图,所以我认为Window(窗口)和Activity(活动)都可以去掉,变成这样。 Android的真正视图等级 讲到这里,可能会有些人激动了,WTF!讲的啥玩意!Window呢?Window可是窗口啊!WindowsManager可是对窗口进行管理啊(其实我对WindowsManager是对窗口进行管理这句我也不认同,后续会说) 从简单的布局文件开始入手为了不至于枯燥,先从一个小例子说起: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|