Android View的绘制流程

来源:互联网 发布:爬虫为什么用python 编辑:程序博客网 时间:2024/06/09 20:58

Activity是应用程序的载体,它提供一个窗口来绘制各种视图。启动Activity时,会通过setContentView方法来设置一个内容视图(ViewGroup)。
先了解一下Android的UI管理系统的层级关系
Android的UI管理系统的层级关系

1.PhoneWindow
PhoneWindow是Android中的最基本的窗口系统,每个Activity 均会创建一个PhoneWindow对象,是Activity和整个View系统交互的接口。
2. DecorView

DecorView是当前Activity所有View的祖先,它并不会向用户呈现任何东西,它主要有如下几个功能,可能不全:

A. Dispatch ViewRoot分发来的key、touch、trackball等外部事件;

B. DecorView有一个直接的子View,我们称之为System Layout,这个View是从系统的Layout.xml中解析出的,它包含当前UI的风格,如是否带title、是否带process bar等。可以称这些属性为Window decorations。

C. 作为PhoneWindow与ViewRoot之间的桥梁,ViewRoot通过DecorView设置窗口属性

下面就来说一下,View的绘制流程
当Activity启动时,绘制会从根视图ViewRoot的performTraversals()方法开始,从上到下遍历整个视图树,每个View控件负责绘制自己,而ViewGroup还需要通知子View进行绘制
视图绘制过程分为个步骤
1.测量(Measure)
2.布局(Layout)
3.绘制(Draw)

原创粉丝点击