View的三大流程是什么,加以简单说明

measure,layuout,draw。这三大流程由ViewRoot通过调用performTranversals发起。

measure:系统根据父View的MeaureSpec和View的layoutparams计算出View的MeasureSpec,通过meaure方法参数传递给View使用。measure方法调用onMesure通过传参将MeasureSpec传递给onMeasure方法。View包括ViewGroup可以通过重写onMeasure实现自定义的测量。当测量完毕,通过setMeasuredDimension,将自定义测量的宽高设置给View。

layout: 系统计算出子View在父View中的left,top,right,bottom,通过layout方法将定点的值传入。在layout中通过setFrame设置View在父View中的位置。如果View是ViewGroup的话,还会调用onLayout,在onLayout中通过对setchildframe的调用实现对子View的layout的发起。

draw: 这个流程做了很多事情,简单来讲就是 1.绘制背景 2.保留涂层 3.绘制当前View的内容 4.唤起子View的draw过程 5.绘制阴影,恢复图层 6.绘制边饰。这里涉及到一个优化的点:WillNotDraw字段。

 

这些只是空洞的概念,如果你想要有深刻点的认识所谓三大流程到底有什么作用,点击这里https://blog.csdn.net/a15998126054/article/details/105472697。这篇文章通过回答onmeasure,onlayout,ondraw如何使用,让你有更细节化的认知。

你可能感兴趣的:(#,android基础)