1、(measure)计算窗体中所有View的大小,无论是Dialog还是Activity
2、(layout)为所有视图分配位置,视图可以重叠
3、(draw)每个窗体,都只有一个Canvas,绘制的时候,父视图在给子视图分配cavas之前,会按第一步计算的大小预先clip.然后把canvas传递进去进行绘制,然后递归遍历。
所以
1、View的ondraw方法Canvas绘制坐标起点都为0,0的缘故。
2、一个Acitivity中所有View 的ondraw方法传递过来的Canvas的调用getWidth,getHeight与View的参数无关,而且固定不变。