View树的绘制流程:
measure() --> layout() --> onDraw(),具体使用这个可以参考之前实现的自定义的博客:【http://www.cnblogs.com/webor2006/p/7525979.html】
measure():
其整个绘制过程如图下:
其它涉及到以下几个重要的参数:
- ViewGroup.LayoutParams
- MeasureSpec:其中有三个模式,具体可以参考博客【http://www.cnblogs.com/webor2006/p/7525979.html】:
其涉及到以下几个重要的方法:
①、measure:
而接着它会调用下面的方法,如下:
②、onMeasure:
③、setMeasuredDimension():
layout():
这个跟measure流程差不多,也是自上而下进行遍历,如下:
draw():
有了前两个过程,接下来就可以进行绘制啦,这里需要强调两个比较容易混淆的方法:
- invalidate();它会引起重绘,也就是draw()方法。
- requestLayout();它只会引起重新测量,不会导致draw()方法重新触发。