View绘制流程记录

2020-09-27  本文已影响0人  bogerLiu

View绘制流程 简单介绍

Dialog为例子

Dialog构造方法 setWindowManager 创建 WindowManagerImpl 至此截止
dialog show()方法 内部会调用 onstart mWindowManager.addView()方法

继续看 mWindowManager.addView mWindowManager 实现类是 构造方法内创建的WindowManagerImpl

WindowManagerImpl具体方法实现是由 WindowManagerGlobal真实操作

那么 addView要看 WindowManagerGlobal的实现

addView内部 创建了ViewRootImpl root 并调用了 ViewRootImpl.setView

setView 内部调用了 requestLayout

requestLayout 内部则调用了scheduleTraversals

scheduleTraversals 熟悉的方法 就是 mChoreographer.postCallback(Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null);

mTraversalRunnable 开始了 doTraversal 也就是 performTraversals
performTraversals 这个方法就表示了 开始绘制View 了

里面也就是 performMeasure performLayout performDraw

上一篇 下一篇

猜你喜欢

热点阅读