View的内部方法回调顺序以及SurfaceView

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.csdn.net/csu54zzg/article/details/39251127




你可能感兴趣的:(View的内部方法回调顺序以及SurfaceView)