Android 中一个 View 的显示渲染过程,自定义 View 的时候需要避免什么操作?
一、View 的显示渲染过程
- 测量(Measure)阶段
- 这个阶段是 View 渲染的第一步。父容器会调用子 View 的
measure()
方法来确定子 View 的大小。measure()
方法会传入两个参数,即MeasureSpec
(测量规格),它包含了父容器对该子 View 的大小限制信息。子 View 会根据这些限制和自身的内容来计算出自己期望的大小。例如,对于一个 TextView,它会根据文本的长度、字体大小等因素来计算自己的宽度和高度。 - 这个过程是递归的,从根视图开始,一层一层地向下传递测量规格,直到所有的子 View 都完成测量。如果是一个复杂的布局,比如 LinearLayout 中有多个子 View,LinearLayout 会根据自己的布局方向(水平或垂直)和子 View 的测量规格来确定自己的大小,并且这个大小会影响它的父容器的测量。
- 这个阶段是 View 渲染的第一步。父容器会调用子 View 的
- 布局(Layout)阶段
- 在测量阶段确定了