20210422日报

1、在View的默认实现中,View的测量宽/高和最终宽/高是相等的,只不过测量宽/高形成于View的measure过程,而最终宽/高形成于View的layout过程,即两者的赋值时机不同,测量宽/高的赋值时机稍微早一些。多数情况下可以认为View的测量宽/高就等于最终的宽/高,但对于在View的layout中改变了View的left、top、right、bottom四个属性时,得出的测量宽/高有可能和最终的宽/高不一致;还有就是View需要多次measure才确定自己测量宽/高的情况时,在前几次的测量过程中,其得出的测量宽/高有可能和最终的宽/高不一致,但最终测量宽/高还是和最终宽/高相同。

2、View的draw流程如下:

  • 绘制背景(background.draw);

  • 绘制自己(onDraw);

  • 绘制children(dispatchDraw);

  • 绘制装饰(onDrawScrollBars)。

原文地址:https://www.cnblogs.com/Clark-Shao/p/14908059.html