view的初始化绘制流程

初始化绘制是指在 View 被第一次添加到视图层次结构中并变得可见时发生的绘制过程。这个过程涉及到多个步骤,从 View 的创建到最终在屏幕上呈现出来。下面是一个详细的解释:

  1. View 创建: 当你在 XML 布局文件中定义了 View 或者在代码中动态创建了 View,这个 View 实例就被创建了。然而,此时 View 仅仅是一个 Java 对象,还没有实际的尺寸和位置信息。

  2. View 添加到层次结构: View 必须被添加到一个父容器(如 LinearLayout, RelativeLayout 等)中,才能成为视图层次结构的一部分。这通常在 Activity 的 onCreate 方法中通过调用 setContentView 方法实现,该方法会将 XML 布局文件加载为视图层次结构。

  3. 此时 Activity 的 onResume 方法执行,意味着该 Activity 正在进入用户可见和交互的状态。在这个阶段,如果 Activity 的视图层次结构中包含的 View 之前没有被绘制过,或者由于某些原因需要重新绘制(例如屏幕旋转、配置变化、View 的状态改变等),那么 ViewRootImpl 将会开始执行绘制流程。

  4. view的绘制流程:

4.1. 测量(Measure): 当 View 被添加到层次结构后,系统会调用 onMeasure 方法来测量 View 的尺寸。这个过程会根据父容器传递给子 View 的 MeasureSpec 来决定 View 的宽度和高度。MeasureSpec 包含了父容器对子 View 的尺寸要求,如 MATCH_PARENT 或 WRAP_CONTENT。

4.2. 布局(Layout): 在测量完成后,系统会调用 onLayout 方法来确定 View 的确切位置和最终尺寸。在这个阶段,View 的坐标和尺寸被固定下来。

4.3. 绘制(Draw): 一旦 View 被测量和布局,接下来就是绘制阶段。系统会调用 onDraw 方法,提供一个 Canvas 对象,View 可以在这个 Canvas 上绘制其内容。onDraw 方法是 View 自定义绘制逻辑的地方,你可以在这里画出任何你想要的图形或内容。 合成和显示: 最终,所有 View 的绘制结果都会被合成到一起,形成最终的屏幕输出。

这个过程可能涉及多层 View 的绘制和透明度处理,以及硬件加速图形渲染。 整个初始化绘制流程是由 ViewRootImpl 控制的,它负责管理 View 的绘制、事件分发和窗口输入。当 Activity 的 onResume 方法被调用时,视图层次结构变得活跃,ViewRootImpl 将开始执行绘制流程,确保所有 View 被正确地显示在屏幕上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值