本文主要是介绍View体系(十一)View的draw流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
之前的文章《View体系(六)View工作流程入口》提到View
的工作流程包括了measure
、layout
和draw
的过程,今天我们就来看一下View
的draw
流程是怎样的。
(注:文中源码基于
Android 12
)
View
的draw
流程很简单,源码里的注释官方也写的很清楚,我们看View
的draw
方法:
public void draw(Canvas canvas) {...// Step 1, draw the background, if neededdrawBackground(canvas);...// skip step 2 & 5 if possible (common case)...// Step 2, save the canvas' layers...// Step 3, draw the contentonDraw(canvas);...// Step 4, draw the childrendispatchDraw(canvas);...// Step 5, draw the fade effect and restore layers...// Step 6, draw decorations (foreground, scrollbars)onDrawForeground(canvas);...// Step 7, draw the default focus highlightdrawDefaultFocusHighlight(canvas);
总览
官方注释已经清楚的写了每一步的工作:
- 如果需要,则绘制背景(
drawBackground
) - 保存当前canvas层
- 绘制View的内容(
onDraw
) - 绘制子View(
dispatchDraw
) - 如果需要,则绘制View的褪色边缘,类似于阴影效果
- 绘制装饰,比如滚动条(
onDrawForeground
) - 绘制默认焦点高亮效果(
drawDefaultFocusHighlight
)
注释中说明了第2步和第5步可以跳过,这里就不展开讲解,在此重点分析其他步骤。
步骤1:绘制背景
进入View
的drawBackground
方法:
private
这篇关于View体系(十一)View的draw流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!