requestLayout 和 invalidate區別

View繪製分三個步驟,順序是:onMeasure,onLayout,onDraw。調用invalidate方法只會執行onDraw方法;調用requestLayout方法只會執行onMeasure方法和onLayout方法,並不會執行onDraw方法。

所以當我們進行View更新時,若僅View的顯示內容發生改變且新顯示內容不影響View的大小、位置,則只需調用invalidate方法;若View寬高、位置發生改變且顯示內容不變,只需調用requestLayout方法;若兩者均發生改變,則需調用兩者,按照View的繪製流程,推薦先調用requestLayout方法再調用invalidate方法。
invalidate和postInvalidate:invalidate方法只能用於UI線程中,在非UI線程中,可直接使用postInvalidate方法,這樣就省去使用handler的煩惱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章