過度繪製的小筆記

2021-08-14 07:08:41 字數 942 閱讀 5506

第一次寫部落格,好多規則還不懂,就當是自己的筆記了。

如果給乙個布局繪製了重疊的背景,那麼預設activity的背景就屬於無效的過度繪製,即overdraw。

1:如果乙個布局需要多個linearlayout巢狀才能完成,這個時候我們就要考慮使用relativelayout來代替了。

2:盡可能的減少view樹的層數,多使用標籤,該標籤一般是和標籤一塊使用,減少布局的層級。比如說:如果當前的布局是乙個豎直方向的linearlayout設定了背景,而且包含的布局檔案也是豎直方向也設定了相同背景,那麼這個時候被包含的布局檔案是多餘的,也是的用武之地了。

3:有的時候我們使用imageview的時候,通常會給該控制項設定預設,那麼建議不要在background屬性上設定,因為我們在給imageview設定應有的的時候不是在這個屬性上設定的。

4:如果不用系統的背景,移除window預設的background(getwidow.setbackgrounddrawable(null);),要在setcontentview方法之後呼叫。如果我們的布局檔案中多餘的背景也要去掉,包括顏色背景。

5:對於不常用的布局,建議使用viewstub,因為它比較輕量級(寬和高都是0),本身不參與任何布局個繪製過程。可以按需載入所需的布局檔案,也就是我們什麼時候想讓該布局檔案出現了,呼叫viewstub的inflate方法,viewstub才會初始化,然後我們findviewbyid建立viewstub所指的物件。使用比如:網路異常的介面。

6:每乙個window對應乙個view和乙個viewrootimpl,也對應乙個canvas,window下的所有檢視(view、viewgroup)使用的是同乙個canvas,檢視樹的父節點在呼叫子檢視的draw方法之前會對canvas進行裁切,裁切的區域就是view的矩形區域。這也就是為什麼超過view邊界的內容會被裁掉的原因。我們可以利用呼叫canvas.cliprect()對多餘的、重疊並且帶背景的view進行裁切。

效能優化過度繪製

過度繪製對效能會產生不必要的開銷,如果能減少不必要的繪製,將有助於效能的提公升。以下以在手機上進行 debug gpu overdraw 舉例 看到整個螢幕有顏色變化就對了 1 這裡有四層顏色的指示,顏色的層級表示螢幕上有多少畫素過度繪製 什麼是過度繪製,假設你在根檢視viewgroup match...

Android效能優化課程 過度繪製

如果你粉刷過乙個房間或一所房子,就會知道給牆壁塗上顏色需要做大量的工作。假如你還要重新粉刷一次的話,第二次粉刷的顏色會覆蓋住第一次的顏色,第一次的顏色就永遠不可見了,等於你第一次粉刷做的大量工作就完全被浪費掉。這太可怕了。同樣的道理,如果在你的應用程式中浪費精力去繪製一些東西同樣會產生效能問題。過度...

Android UI效能優化 過度繪製篇

每過幾年,就會有傳聞說某個博物館在用x光掃瞄一副無價的名畫之後,發現畫作的作者其實重用了老的畫布,在名畫的底下還藏著另一副沒有被發現的畫作。有時候,博物館還能用高階的影象技術來還原畫布上的原作。android裡面的view的繪製就是類似的情況。當android系統繪製螢幕的時候,先畫父view,然後...