Android View重绘和更新常用的方法

Android开发过程中,由于个性化的需求越来越多,原生的系统的View已经不能满足于产品的需要。所以开发过程中自定义View已经是家常便饭.

在自定义View中我们经常会用重绘和更新常用的方法有 invalidate、requestLayout

invalidate方法会执行draw过程,重绘View树。

View执行requestLayout方法,会向上递归到顶级父View中,再执行这个顶级父View的requestLayout,所以其他View的onMeasure,onLayout也可能会被调用。

总结:

View绘制分三个步骤,顺序是:onMeasure,onLayout,onDraw。调用invalidate方法只会执行onDraw方法;调用requestLayout方法只会执行onMeasure方法和onLayout方法,并不会执行onDraw方法。

所以当我们进行View更新时,若仅View的显示内容发生改变且新显示内容不影响View的大小、位置,则只需调用invalidate方法;若View宽高、位置发生改变且显示内容不变,只需调用requestLayout方法;若两者均发生改变,则需调用两者,按照View的绘制流程,推荐先调用requestLayout方法再调用invalidate方法。

其他知识点:

1.invalidate和postInvalidate:invalidate方法只能用于UI线程中,在非UI线程中,可直接使用postInvalidate方法。




猜你喜欢

转载自blog.csdn.net/wangwangli6/article/details/79832294
今日推荐