这是我参与「第四届青训营 」笔记创作活动的第30天
页面绘制的调用
onResume
在生命周期中,其作用的体现得比onCreate更加频繁。例如在用户正常使用过程中,突然切换了屏幕。应用界面不再被用户看到,将会调用onPause方法进入onStoped状态。重新切回屏幕后,会再调用onResume方法,绘制界面,重现显示在用户眼中
在handleResumeActivity方法中
窗口会被添加到窗口管理器
会获取到当前窗口的DecorView
由此获得viewRootImpl,这是绘制流程开始的起点
viewRootImpl是视图层次结构的顶部,实现视图和WindowManager之间所需的协议。这在很大程度上是以下内容的内部实现细节:
setView()方法
在方法体中调用requestLayout方法
在具体绘制的工程中,PerformMeasure是绘制起点,也是整体绘制流程的中后部分
它会尝试调用view的measure方法。这会测量视图及其内容,以确定测量的宽度和测量的高度。
performLayout会尝试调用mView的layout() 这会为为视图及其所有子视图指定大小和位置 这是布局机制的第二阶段。(第一个是测量)。在此阶段,每个父级调用其所有子级的布局来定位它们
performDraw()
传入Canvas参数的draw方法。手动将此视图(及其所有子视图)渲染到给定Canvas。在调用此函数之前,视图必须已完成完整布局
Canvas类是保存“draw”调用。要绘制一些东西,您需要4个基本组件:一个保存像素的位图、一个承载绘制调用(写入位图)的画布、一个绘制原语(例如,矩形、路径、文本、位图)和一个绘制(用于描述图形的颜色和样式)