Android 優(yōu)化之減少過度繪制

概念

過度繪制是指系統(tǒng)在渲染單個(gè)幀的過程中在屏幕上繪制某個(gè)像素。例如有若干個(gè)界面卡片堆疊在一起跟压,每張卡片都會遮蓋其下面一張卡片的部分內(nèi)容。但是违霞,系統(tǒng)仍然需要繪制堆疊中的卡片被遮蓋的部分。這是因?yàn)槎询B的卡片是根據(jù)畫家算法(即從后到前的順序)來渲染的瞬场。按照這種順序买鸽,系統(tǒng)可以將適當(dāng)?shù)耐该鞫然旌蠎?yīng)用于陰影之類的半透明對象。

GPU 過度繪制調(diào)試工具

開啟開發(fā)者模式——>硬件加速渲染——>開啟調(diào)試 GPU 過度繪制贯被。Android 將如下方式為界面著色眼五,以確定過度繪制的次數(shù):

  • 真彩色:沒有過度繪制
  • 藍(lán)色:過度繪制 1 次
  • 綠色:過度繪制 2 次
  • 粉色:過度繪制 3 次
  • 紅色:過度繪制 4 次或者更多次。

減少過度繪制的方法

  • 移除布局中不需要的背景
    默認(rèn)情況下刃榨,布局沒有背景弹砚,這表示布局本身不會直接去喧嚷任何內(nèi)容双仍。但是枢希,當(dāng)布局具有背景時(shí),其可能會導(dǎo)致過度繪制朱沃。移除不必要的背景可以快速提高渲染性能苞轿。不必要的背景可能永遠(yuǎn)不可見,因?yàn)樗鼤粦?yīng)用在該視圖上繪制的任何其它內(nèi)容完全覆蓋逗物。例如搬卒,當(dāng)系統(tǒng)在父View 上繪制子 View 時(shí),可能會完全覆蓋父 View 的背景翎卓∑跹可以將 Window 背景設(shè)為應(yīng)用的主背景顏色,并且不為其上面的任何容器定義背景值失暴。
  • 使視圖層次結(jié)構(gòu)扁平化
    復(fù)雜的布局可能導(dǎo)致 View 的層級結(jié)構(gòu)過深坯门,從而可能導(dǎo)致重疊的頁面過多,出現(xiàn)了過度繪制的情況逗扒,可以通過優(yōu)化布局來減少重疊頁面古戴,從而提高性能。
  • 降低透明度
    在屏幕上渲染透明像素矩肩,即所謂的透明度渲染现恼,使導(dǎo)致過度繪制的重要因素。在普遍的過度繪制中黍檩,系統(tǒng)會在已繪制的現(xiàn)有像素上繪制不透明的像素叉袍,從而將其完全遮蓋,與此不同的是刽酱,透明對象需要先繪制現(xiàn)有的像素喳逛,以便達(dá)到正確的效果。諸如透明動(dòng)畫肛跌、淡出和陰影之類的視覺效果都會涉及到某種透明度艺配,因此有可能會導(dǎo)致嚴(yán)重的過度繪制察郁。可以通過減少要渲染的透明對象的數(shù)量转唉,改善這些情況下的過度繪制皮钠。例如,要獲得灰色文本赠法,可在 TextView 中繪制黑色文本麦轰,再為其設(shè)置半透明的透明度值,如下:
        textView.setTextColor(Color.parseColor("#000000"));
        textView.setAlpha(0.6f);
        textView.setText("灰色文本");

但是砖织,可以簡單地通過用灰色繪制文本來獲得同樣的效果款侵,而且能夠大幅提升性能,如下:

       textView.setTextColor(Color.parseColor("#99000000"));
       textView.setText("灰色文本");
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侧纯,一起剝皮案震驚了整個(gè)濱河市新锈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌眶熬,老刑警劉巖妹笆,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異娜氏,居然都是意外死亡拳缠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門贸弥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窟坐,“玉大人,你說我怎么就攤上這事绵疲≌茉В” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵最岗,是天一觀的道長帕胆。 經(jīng)常有香客問我,道長般渡,這世上最難降的妖魔是什么懒豹? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮驯用,結(jié)果婚禮上脸秽,老公的妹妹穿的比我還像新娘。我一直安慰自己蝴乔,他們只是感情好记餐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著薇正,像睡著了一般片酝。 火紅的嫁衣襯著肌膚如雪囚衔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天雕沿,我揣著相機(jī)與錄音练湿,去河邊找鬼。 笑死审轮,一個(gè)胖子當(dāng)著我的面吹牛肥哎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疾渣,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼篡诽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了榴捡?” 一聲冷哼從身側(cè)響起杈女,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎薄疚,沒想到半個(gè)月后碧信,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡街夭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躏筏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片板丽。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖趁尼,靈堂內(nèi)的尸體忽然破棺而出埃碱,到底是詐尸還是另有隱情,我是刑警寧澤酥泞,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布砚殿,位于F島的核電站,受9級特大地震影響芝囤,放射性物質(zhì)發(fā)生泄漏似炎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一悯姊、第九天 我趴在偏房一處隱蔽的房頂上張望羡藐。 院中可真熱鬧,春花似錦悯许、人聲如沸仆嗦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘩扼。三九已至谆甜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間集绰,已是汗流浹背店印。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留倒慧,地道東北人按摘。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像纫谅,于是被迫代替她去往敵國和親炫贤。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355