View 绘制流程概述

2016-7-10 chenhui View

View 是 Android 中所有控件的基类,不管是 Button 还是 TextView,都是他的子类,当然也包括 ViewGroup,ViewGroup 继承 View 的同时,也支持了“容器”功能,即 ViewGroup 内部能存放一组 View。


View 的绘制是从 ViewRoot 的 performTraversals 方法开始的,他经过 measure、layout、draw 三个过程才把一个 View 绘制出来。流程如下:

这三个函数的方法想必都很清楚:

  • measure 对 View 的大小进行测量。此步完成后,可以通过 getMeasuredWidth/Height 来获得高宽,但这个高宽不一定是最终大小。
  • layout 决定 View 的位置和最终大小。此步完成后,可以通过 geTop/Bottom/Left/Right 来得到 View 四个点的坐标,以及 getWidth/Height 来得到最终大小。
  • draw 提供一个 Canvas 给 View 进行绘制,这个方法完成后,View 的内容才能显示在屏幕上。


对自定义 ViewGroup 有所了解的,就知道上诉每一个流程,都会继续调用子 View 的相应方法来完成绘制。View 树的遍历就是这么完成的。







发表评论:

Copyright ©2015-2016 freehui All rights reserved