android高级ui绘制,高级UI<第九篇>:源码分析UI的绘制流程(Android 9.0)
时间: 2023-12-02 19:03:05 浏览: 114
在 Android 中,UI 的绘制流程主要是通过 View 的 onDraw() 方法实现的。在这个方法中,我们可以获得一个 Canvas 对象,通过它来进行具体的绘制操作。
具体的绘制流程如下:
1. ViewRootImpl 的 performTraversals() 方法被调用,该方法是 View 绘制的入口方法。
2. performTraversals() 方法会先对 View 树进行测量(measure)和布局(layout)操作,这两个操作的目的是确定 View 的大小和位置。
3. 测量和布局完成后,performTraversals() 方法会遍历整个 View 树,调用每个 View 的 draw() 方法进行绘制。
4. 在 draw() 方法中,View 会将自己的绘制操作委托给一个名为 mPrivateFlags 的标志位来处理,如果该标志位为 false,则说明该 View 需要进行绘制操作。
5. 绘制操作完成后,View 会将 mPrivateFlags 设置为 true,表示该 View 已经完成绘制,避免重复绘制。
除了上述步骤之外,还有一些特殊情况需要注意:
1. 如果 View 的背景不透明,则在绘制 View 之前需要先绘制背景。
2. 如果 View 的父 View 不透明,则在绘制 View 之前需要先绘制父 View。
3. 如果 View 的 clipRect 属性被设置,则需要在绘制 View 之前先进行裁剪操作。
以上就是 Android 中 UI 的绘制流程。需要注意的是,这里只是简单地介绍了整个流程,具体的实现细节还需要通过查看源代码来深入了解。
阅读全文