1. 程式人生 > >Android View重繪和更新常用的方法

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方法。