日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发者选项之GPU过度绘制

發布時間:2023/12/29 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发者选项之GPU过度绘制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
做設計的人很少能知道GPU過度繪制是個什么鬼?跟設計有什么關系?今天就讓大家了解了解,首先來普及一下Android開發者選項中的Debug GPU overdrawGPU過度繪制定義 如果你粉刷過一個房間或一所房子,就會知道給墻壁涂上顏色需要做大量的工作。假如你還要重新粉刷一次的話,第二次粉刷的顏色會覆蓋住第一次的顏色,第一次的顏色就永遠不可見了,等于你第一次粉刷做的大量工作就完全被浪費掉。這太可怕了。 同樣的道理,如果在你的應用程序中浪費精力去繪制一些東西同樣會產生性能問題。過度繪制這個名詞就是用來描述屏幕上一個像素在單個幀中被重繪了多少次。 GPU過度繪制就指的是在屏幕一個像素上繪制多次(超過一次),GPU過度繪制或多或少對性能有些影響。 GPU過度繪制分析 過度繪制其實是一個性能和設計的交叉點。我們在設計上追求很華麗的視覺效果,但一般來說這種視覺效果會采用非常多的層疊組件來實現,這時候就會帶來過度繪制的問題。我們再來看看具體顯示在Android界面層級關系: 當我們來繪制一個界面時,會有一個windows,然后是建立Activity,在Activity里可以建立多個view,或view group,view也可以嵌套view。這些組件從上到下分布,上面的組件是可以被用戶看見的,而在下面的組件是不可見的,但是我們依然要花很多時間去繪制那些不可見的組件,因為在某些時候,它也可能會顯示出來。

檢測過度繪制 如何查看是否過度繪制: 設置-開發者選項-調試GPU過度繪制-顯示過度繪制區域(過度渲染等,不同機器可能不同)

然后就可以看看你的應用是否存在過度繪制的情況了。 那么如何判斷界面是否存在過度繪制呢? 開啟后,點擊我們的應用,可以看到各種顏色的區域,其中:

最理想的是藍色,一個像素只繪制一次,合格的頁面繪制是白色、藍色為主,綠色以上區域不能超過整個的三分之一,顏色越淺越好。 那么從設計的角度來看你的應用是否GPU繪制過度,看一下以下幾個界面:

從上圖我們可以看出: Google?now頁面GPU繪制比較正常基本都是在1x-2x范圍內,QQ的繪制情況也還可以,2345手機助手和2345影視大全過度繪制是很嚴重的,基本都是超過3x,4x。 可能有些人覺得不以為然,覺得沒什么影響。話又說回來,GPU繪制過渡對應用造成什么影響。 實際上,GPU繪制影響的是界面的流暢度和用戶體驗,對于好的手機可能體驗不到差距,對于差的手機,流暢度卻起著關鍵的作用。 可以大部分設計師關注的都是開發是否有100%還原你的設計稿,應用的交互體驗是否良好,沒有幾個設計師會去關注GPU過度繪制問題。 本人接觸到這方面知識也是優化我們開發人員指導,當時我們正在做界面層級簡化,而應用界面出現了2種背景顏色,如圖(左邊的背景為白色,右邊的背景為淺灰)。

開發讓我們梳理一下頁面層級,得出右邊的管理頁面要再多繪制一層;

開發人員建議我們以后在設計中,梳理一下頁面之前層級關系,盡量保持整個界面的架構統一,大背景色一致性。而且開發人員在開發過程中,盡量用簡化的結構來布局,保持界面還原度的同時也要考慮界面的流暢度。 列舉一下我們2345王牌助手首頁界面前后優化對比,看了以后,感覺整個人的心情都好了有木有啊,感覺更高大上了很多。

經過優化后的頁面一次繪制時間能提升3ms-5ms,可以看下面這張圖來進行對比,綠色色塊部分為提升空間。
這次優化工作對我來說,是一次寶貴的經驗,我們一直在努力讓設計變得更好,但有時候設計不只是表面的美化工作,還是深度的改善用戶體驗。在這里我想感慨一下,一個項目的成功上線,里面不知道有多少酸甜苦辣,不知道有多少人在為之努力,感謝所有工作人員的不懈努力,辛苦你們啦! 總結原因: 1.太多重疊的背景 重疊著的背景有時候是有必要的,有時候是沒必要的。這要視你的項目具體情況而定。 2.太多疊加的View 或者本來這個UI布局就很復雜或者你是為了追求一個炫麗的視覺效果,這都有可能使得很多view疊加在一起。這個情況非常普遍,下面的建議中會談談怎么減少這種情況帶來的影響。 3.復雜的Layout層級 復雜的層級關系,這個在布局中也很常見,下面也會說這種情況怎么做可以盡可能的減少過度繪制。 建議: 1.太多重疊的背景 這個問題其實最容易解決,建議前期在設計時盡量保持整體背景統一,另外開發可以檢查你在布局和代碼中設置的背景,有些背景是被隱藏在底下的,它永遠不可能顯示出來,這種沒必要的背景一定要移除,因為它很可能會嚴重影響到app的性能。 2.太多重疊的view 第一個建議是:使用ViewStub來加載一些不常用的布局,它是一個輕量級且默認不可見的視圖,可以動態的加載一個布局,只有你用到這個重疊著的view的時候才加載,推遲加載的時間。第二個建議是:如果使用了類似viewpager+Fragment這樣的組合或者有多個Fragment在一個界面上,需要控制Fragment的顯示和隱藏,盡量使用動態地Inflation view,它的性能要比SetVisiblity好。 3.復雜的Layout層級 這里的建議比較多一些,首先推薦用Android提供的布局工具Hierarchy Viewer來檢查和優化布局。第一個建議是:如果嵌套的線性布局加深了布局層次,可以使用相對布局來取代。第二個建議是:用標簽來合并布局,這可以減少布局層次。第三個建議是:用標簽來重用布局,抽取通用的布局可以讓布局的邏輯更清晰明了。記住,這些建議的最終目的都是使得你的Layout在Hierarchy Viewer里變得寬而淺,而不是窄而深。

文/布滟布羽(簡書作者) 原文鏈接:http://www.jianshu.com/p/ab0cf2697236 著作權歸作者所有,轉載請聯系作者獲得授權,并標注“簡書作者”。

總結

以上是生活随笔為你收集整理的Android开发者选项之GPU过度绘制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。