Android View重繪和更新常用的方法
阿新 • • 發佈:2019-02-18
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方法。