View绘制流程记录

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。