requestLayout()定义:调用requestLayout()方法的时机是:当前View发生了一些改变,这个改变使得现有的View失效,所以调用requestLayout()方法对View树进行重新布局,过程包括了measure()和layout()过程,但不会调用draw()过程,即不会发生重新绘制视图过程。只是重新测量和布局
onLayout()定义:调用onLayout()的时机是:View需要给自己设置大小和位置了或者ViewGroup需要给子View和ViewGroup自身时调用。
requestLayout()与onLayout()方法之间的联系:其实两个方法之间的联系很少,调用时机不同,调用者不同,调用时处理的方式和结果都不同。
onDraw()定义:
onDraw()方法就是在绘制View第三步时发生,已经测量好View的大小,设置好View的布局,剩下最后一步就是,具体画出这个布局。画的方法就是onDraw(),每个View都需要利用这个方法画出自己,ViewGroup除了要设置背景,不然一般都不会调用该方法
drawChild()定义:
去重新回调每个子视图的draw()方法。
onDraw()方法和drawChild()方法之间的联系:
①绘制VIew本身的内容,通过调用View.onDraw(canvas)函数实现;
②ViewGroup绘制自己的孩子通过dispatchDraw(canvas)实现,这个方法中调用drawChild(),而这个方法会调用每个View中onDraw()来绘制