您的位置:首页 > 其它

view 详解 (一) 将view加载到窗口过程分析

2014-07-18 17:56 218 查看
1.window类

为一个抽象类,提供绘制窗口的一组通用api,可以将之理解为一个载体,各种view在这个载体上显示

2.phoneWindow 

2.1该类继承于window类,是window类的具体实现,我们可以通过该类具体去绘制窗口。

2.2 该类包含了一个DecorView对象,DecorView是所有应用窗口的根view

2.3 简而言之,phonewindow类是吧一个FrameLayout类即DecorView对象进行包装。在phoneWindow 

部分源码



3.DecorView类

3.1 该类是phoneWindow类的内部类,是FrameLayout的子类,是一个装饰的view,比如说title,titleBar,最主要的一点是,它是所有应用窗口的根view



3.2 decorview只有一个子元素为LinearLayout,代表整个应用界面,包含通知栏,标题栏,内容显示栏三块区域

3.3 LinearLayout里面有两个FrameLayout子元素 20,为标题栏显示界面,21为内容显示界面,就是setcontentView()方法载入的布局界面。

4.Activit调用setContentView(intresId)过程



4.1 从上图可以看出,Activity.setContentView(int layoutResId) 是在PhoneWindow(Window的实现类)中完成。

4.2 在phoneWindow的setcontentView(int resId)中,如果setContentView是第一次加载,则会调用installDecor(),此方法是创建DecorView,即根视图,如果不是第一次调用setcontentView,则removeAllViews内容中的所有视图,

这就解释了设置titleBar,是否有标题,是否全屏,都要在setContentView之前执行,因为第一次setContentView,DecorView就已经建立
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐