外观
measure layout draw 和 dispatchDraw 分别负责什么?
标准回答
measure 依据父容器约束和自身期望确定 measuredWidth 与 measuredHeight;layout 根据父容器给定的边界确定实际位置和大小,ViewGroup 再在 onLayout 中放置子 View;draw 组织背景、自身内容、子内容和前景等绘制阶段。普通控件的主要内容在 onDraw 中绘制,ViewGroup 通过 dispatchDraw 遍历并绘制子 View。自定义 View 重点实现测量和自身绘制,自定义 ViewGroup 还必须负责子 View 的测量和布局。
延伸追问
ViewGroup 是否绘制自身内容还受 willNotDraw 等条件影响;dispatchDraw 负责子节点,不等于整个 draw。
内容来源
- Android Framework 知识手册 · 原条目
2-4