Android面试题——掘金-Framework之View的绘制流程(2.7)
一 概述
1 | Android View 的绘制流程 是 Android Framework 中的核心知识, |
二 面试题解答(仅供参考)
2.1 View 的绘制流程是什么?
1 | Android View 的绘制流程包括 三大核心阶段: |
2.2 View 绘制的入口在哪?
1 | View 的绘制从 ViewRootImpl#performTraversals() 开始: |
2.3 View 的测量(Measure)过程是怎样的?
1 | 1.onMeasure() 负责 测量 View 的宽高: |
2.4 View 的布局(Layout)过程是怎样的?
1 | 1.onLayout() 负责 确定 View 的位置: |
2.5 View 的绘制(Draw)过程是怎样的?
1 | 1.onDraw(Canvas canvas) 负责 绘制 View 内容: |
2.6 requestLayout() 和 invalidate() 的区别?
方法 | 作用 | 触发流程 |
---|---|---|
requestLayout() | 重新测量 & 布局 | 触发 measure() 和 layout() ,但不一定触发 draw() |
invalidate() | 重新绘制 | 只触发 onDraw() ,不会重新测量和布局 |
示例:
1 | view.requestLayout(); // 重新测量 & 布局 |
2.7 View 重绘的触发时机有哪些?
1 | 1.invalidate()(UI 线程调用):直接调用 onDraw() 重新绘制 View。 |
2.8 自定义 View 需要重写哪些方法?
1 | 1.方法 |
2.9 如何优化 View 的绘制性能?
1 | 1.使用 ViewStub 延迟加载(避免初始化不必要的 View) |
2.10 为什么 View 需要两次测量?
1 | 1.概念 |
2.11 总结
1 | 1.View 绘制流程:Measure(测量)-> Layout(布局)-> Draw(绘制)。 |
三 参考
- 掘金—知识库的大纲