View的内部回调:
要绘制view的话需要先确定view的大小,所以先说onMeasure:
onMeasure的执行是自下向上的,先确认好最底层的view的大小然后逐层向上确认
onMeasure确定之后如果view 的size发生变化就会触发onSizeChange这个方法,之后就会去执行
onLayout这个方法!
每次我们重绘View的时候都会执行onMeasure和onLayout这两个方法,所以如果有一些关于坐标的初始化
任务就不大适合放在onMeasure方法中,因为有可能这个初始化的值是不需要改变,可是因为onMeasure的
原因导致这个初始值不断在初始化,所以建议把这个初始化工作放在onSizeChange方法中!
下面是测试时打印的一些log信息:
03-17 16:06:16.768 27745-27745/com.ifast.module E/onMeasure﹕ width : 640 height : 496
03-17 16:06:16.788 27745-27745/com.ifast.module E/onSizeChanged﹕ width : 640 height : 496
03-17 16:06:16.788 27745-27745/com.ifast.module E/onLayout﹕ onLayout :
03-17 16:06:16.788 27745-27745/com.ifast.module E/onMeasure﹕ width : 640 height : 496
03-17 16:06:16.788 27745-27745/com.ifast.module E/onLayout﹕ onLayout :
03-17 16:06:24.286 27745-27745/com.ifast.module E/onMeasure﹕ width : 640 height : 496
03-17 16:06:24.296 27745-27745/com.ifast.module E/onLayout﹕ onLayout :
SurfaceView:
http://blog.youkuaiyun.com/csu54zzg/article/details/39251127