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