📘 View绘制 源码逐行解析
30章 · 从入门到内核
1
总览View绘制流程总览
从Activity启动到ViewRootImpl,理解整个绘制链路的起点。
➡️
2
WindowWindow与WindowManager
Window的概念、类型与层级,WindowManager如何添加View。
➡️
3
诞生ViewRootImpl的诞生
ActivityThread.handleResumeActivity中ViewRootImpl的创建与关联。
➡️
4
布局setContentView源码解析
PhoneWindow与DecorView的创建,布局加载到内容区域。
➡️
5
触发链requestLayout的触发链
从View.requestLayout到ViewRootImpl.requestLayout的完整调用栈。
➡️
6
调度scheduleTraversals与Choreographer
VSync信号的请求与同步,帧回调机制。
➡️
7
核心performTraversals核心流程
测量、布局、绘制三大步骤的入口与调度逻辑。
➡️
8
规则MeasureSpec的生成与规则
MeasureSpec的三种模式,根MeasureSpec如何由窗口尺寸决定。
➡️
9
测量onMeasure源码解析
View的默认测量逻辑,setMeasuredDimension的调用时机。
➡️
10
遍历ViewGroup的measure流程
measureChildWithMargins与getChildMeasureSpec的逐层传递。
➡️
11
实战LinearLayout的onMeasure实战
权重分配与子View测量顺序的源码分析。
➡️
12
实战RelativeLayout的onMeasure实战
两次遍历测量与依赖关系的处理。
➡️
13
布局onLayout源码解析
View的布局定位,ViewGroup的抽象布局方法。
➡️
14
实战LinearLayout的onLayout实战
垂直与水平方向的子View摆放逻辑。
➡️
15
实战FrameLayout的onLayout实战
gravity属性对子View位置的影响。
➡️
16
绘制onDraw源码解析
Canvas的创建与Bitmap的分配,绘制背景与内容。
➡️
17
分发ViewGroup的dispatchDraw
绘制子View的遍历顺序与clipChildren的作用。
➡️
18
硬件硬件加速绘制原理
DisplayList的构建与GPU渲染,软件绘制与硬件绘制的切换。
➡️
19
刷新invalidate与postInvalidate
重绘请求的触发机制与区域刷新优化。
➡️
20
滚动View的滚动机制
scrollTo与scrollBy的源码实现,滚动对绘制的影响。
➡️
21
弹性Scroller与OverScroller
弹性滑动的实现原理,computeScrollOffset的调用时机。
➡️
22
触摸View的触摸事件分发
dispatchTouchEvent与onTouchEvent的源码流程。
➡️
23
拦截ViewGroup的事件拦截
onInterceptTouchEvent与requestDisallowInterceptTouchEvent。
➡️
24
焦点View的焦点与键盘导航
焦点查找算法,键盘事件的分发流程。
➡️
25
动画View的动画原理
View动画与属性动画的底层实现,invalidate在动画中的作用。
➡️
26
优化View的绘制优化
过度绘制检测,ClipRect与merge的优化技巧。
➡️
27
实战自定义View实战
继承View与ViewGroup的模板代码,onMeasure与onDraw的注意事项。
➡️
28
线程View的线程安全
UI线程限制,Handler与View.post的源码分析。
➡️
29
状态View的保存与恢复
onSaveInstanceState与onRestoreInstanceState的调用时机。
➡️
30
总结View绘制流程总结
从源码到实战,绘制流程的完整回顾与性能调优建议。
➡️