自定义View继承View和ViewGroup
重写onMeasure(),onDraw()和onLayout()方法
在onMeasure()方法中进行测量出自定义控件的宽和高并且调用setMeasureDimension(width,height)方法,将宽高配置好
然后再onLayout()方法,确定自定义控件在布局中的位置
最后调用onDraw()方法来将自定义View绘制在布局中。
重点来了:
很多时候我们需要改变控件的宽高,可能还会改变内容。
这时候需要使用到View的
requestLayout()方法和invalidate()方法
需要注意到是这两个方法的使用顺序:
必须先调用requestLayout()方法再调用invalidate()方法
解释一下这是为啥理~~~
在调用request Layout()方法的时候,view只会执行onMeasure()方法和onLayout()方法
在调用invalidate()方法是,view会执行onDraw()方法
两个方法执行结束后,自定义控件就可以重绘和更新了。
注:若只改变宽高调用request Layout()方法即可,若只更新内容调用invalidate()方法。