效能優化過度繪製

2021-07-09 17:32:25 字數 868 閱讀 7819

過度繪製對效能會產生不必要的開銷,如果能減少不必要的繪製,將有助於效能的提公升。

以下以在手機上進行 debug gpu overdraw 舉例:

看到整個螢幕有顏色變化就對了+1

這裡有四層顏色的指示,顏色的層級表示螢幕上有多少畫素過度繪製

什麼是過度繪製,假設你在根檢視viewgroup(match_parent)裡設定了乙個background屬性,為藍色。接著在裡面布置乙個子view,這個子view也為viewgroup,它佔螢幕高度一半,background屬性為黃色。那麼應該看到的檢視為一半為藍色,一半為黃色。在這裡,黃色的這一塊區域就屬於過度繪製一次。

為什麼呢?

系統在繪製這個view的時候,首先是繪製了根檢視viewgroup(match_parent)的藍色,這是全屏的,然後接著在子view區域繪製了黃色。但實際上,使用者看不到黃色區域「後面」的藍色。所以,這一塊區域屬於過度繪製。

這是我在公司跟的乙個專案,看到這樣的頁面我也是很惆悵啊!

希望我的分享對你有用!

Android效能優化課程 過度繪製

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

Android UI效能優化 過度繪製篇

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

iOS效能優化 非同步繪製

通讀下來可以總結一下對效能優化,在這裡也就是提高介面流暢度的宗旨只有一句話唯而已 把能非同步執行的都盡量非同步執行.yyfpslabel拿過來用了,檢測fps的變化情況 可以看到,在滑動很快的時候,fps最低已經達到了20幾.經過非同步繪製處理之後,可以看到無論如何滑動,fps一直保持在60.這是我...