本人菜鸟一枚,自己没那个水平研究出view的绘制流程,不过经过各种查阅前辈大牛的资料或者博客知道了view的绘制过程分为onMeasure,onLayout,onDraw三个重要的过程,姑且拿来作为结论来指引自己对Android绘图的的学习,少走了很多的弯路。下面就贴上自己的心得和体会,不对之处欢迎批评指正,共同学习。
开篇之前先说说View和ViewGroup之间的关系,ViewGroup是View的子类,但同样的ViewGroup里面也封装了许多个View的引用包括View集合的引用,这点看源码就可以看出来,从设计模式上来说是典型的组合模式,所以他们之间的关系可以用如下图所示:
当然也可以有其他的树形结构。
View类:1) view的onMeasure在measure方法里调用,在onMeasure会调用setMeasureDimension(intmeasureWidth,int measureHeight)来完成measure过程.onMeasure方法来完成具体的测量逻辑,需要注意的是measure是final方法,当你要实现自己的测量逻辑的时候在子类中是不能重写measure方法的,只能重写onMeasure方法来完成自己的测量逻辑
2)onLayout方法在View类里面是个空方法,由子类去完成
3)同样onDr