View绘制分三个步骤,顺序是:onMeasure,onLayout,onDraw。
调用invalidate方法只会执行onDraw方法;
调用requestLayout方法只会执行onMeasure方法和onLayout方法,并不会执行onDraw方法。
- 当我们进行View更新时,若仅View的显示内容发生改变且新显示内容不影响View的大小、位置,则只需调用invalidate方法;
- 若View宽高、位置发生改变且显示内容不变,只需调用requestLayout方法;
- 若两者均发生改变,则需调用两者,按照View的绘制流程,推荐先调用requestLayout方法再调用invalidate方法。