view绘制:decorview、Window、surface等

2019-05-31  本文已影响0人  崽子猪
基本图.png
Activity

接受到焦点的时候,会请求绘制我们的UI布局(是由我们Android的FreamWork层来处理的.)绘制从根节点开始对我们的布局依次进行测量和绘制

PhoneWindow

其实就是我们Window窗口的一个实现类(这个概念是在我们的Android的FreamWork当中一个Window的抽象类,这个抽象类是对我们Android系统当中窗口的一种抽象)窗口就是屏幕上位于绘制各种的UI布局元素,以及响应我们用户输入事件的矩形的区域.在Android系统为窗口提供了一个功能,窗口独占一个service实例的写实区域,可以把service看作一个写实画布用户可以通过cants可以在上面作画,最后我们可以通过servicebuilder将多块service按照特定的顺序进行混合,然后会输出到我们的StringBuffer当中,这样用户界面就可以显示了

DecorView

是我们应用窗口的一个根容器(本质上是一个FreamLayout)由唯一的一个子View(垂直的LinearLayout)它包含两个元素(TitleView--->ActionBarContainer--->ActionBar/ContentView--->FrameLayout--->RelativeLayout)是用来储存我们内容的

View绘制的整个流程的(由ViewRoot的实现类ViewRootimpl负责的)每一个应用程序窗口DecorView(都有一个相关联的ViewRoot对象)而这个关联的关系是通过我们的WindowsManager这个管理类来维护的

当我们建立好了DecorView和ViewRoot的关联后,会调用我们的requestLayout()这个方法用来完成我们应用程序界面布局的首次布局


ViewRootimpl

这个方法最终会调用scheduleTraversals()这个方法


scheduleTraversals
这个方法通过主线程向主线程发送消息然后不断的依次遍历每一次的绘制过程(因为绘制不是一次就可以完成的)
上一篇 下一篇

猜你喜欢

热点阅读