日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android布局的優(yōu)化方案匯總

層級觀察器(Hierarchy Viewer):

成都創(chuàng)新互聯(lián)主要企業(yè)基礎(chǔ)官網(wǎng)建設(shè),電商平臺建設(shè),移動手機平臺,小程序定制開發(fā)等一系列專為中小企業(yè)定制網(wǎng)站制作產(chǎn)品體系;應(yīng)對中小企業(yè)在互聯(lián)網(wǎng)運營的各種問題,為中小企業(yè)在互聯(lián)網(wǎng)的運營中保駕護航。

Android SDK tools目錄下提供一個觀察布局的工具,層級觀察器(Hierarchy Viewer)。Hierarchy Viewer工具是一個非常好的布局優(yōu)化工具,同時,你也可以通過它學(xué)習(xí)他人的布局。應(yīng)該說是一個非常實用的工具。

 

上面寫有控件名稱和id等信息,下方的圓形表示這個節(jié)點的渲染速度,從左至右分別為測量大小,布局和繪制。綠色最快,紅色最慢。右下角的數(shù)字為子節(jié)點在父節(jié)點中的索引,如果沒有子節(jié)點則為0。點擊可以查看對應(yīng)控件預(yù)覽圖、該節(jié)點的子節(jié)點數(shù)(為6則有5個子節(jié)點)以及具體渲染時間。雙擊可以打開控件圖。右側(cè)是樹形結(jié)構(gòu)的預(yù)覽、控件屬性和應(yīng)用界面的結(jié)構(gòu)預(yù)覽。點擊相應(yīng)的樹形圖中的控件可以在右側(cè)看到他在布局中的位置和屬性。工具欄有一系列的工具,保存為png或者psd等工具。(http://www.linuxidc.com/Linux/2012-01/52263.htm )

layoutopt使用:

創(chuàng)建好看的Android布局是個不小的挑戰(zhàn),當你花了數(shù)小時調(diào)整好它們適應(yīng)多種設(shè)備后,你通常不想再重新調(diào)整,但笨重的嵌套布局效率往往非常低下,幸運的是,在Android SDK中有一個工具可以幫助你優(yōu)化布局,以減少內(nèi)存消耗,提高應(yīng)用程序運行性能。

[[85793]]
layoutoptimization

優(yōu)化是需要一定技巧的,性能良好的代碼固然重要,但寫出優(yōu)秀代碼的成本往往也很高,你可能不會過早地貿(mào)然為那些只運行一次或臨時功能代碼實施優(yōu)化,如果你的應(yīng)用程序反應(yīng)遲鈍,并且賣得很貴,或使系統(tǒng)中的其它應(yīng)用程序變慢,用戶一定會有所響應(yīng),你的應(yīng)用程序下載量將很可能受到影響。

在開發(fā)期間盡早優(yōu)化你的布局是節(jié)省成本,提高性能的簡單方法,Android SDK帶來了一個工具,它可以自動分析你的布局,發(fā)現(xiàn)可能并不需要的布局元素,以降低布局復(fù)雜度。

第一步:準備工作

如果想使用Android SDK中提供的優(yōu)化工具,你需要在開發(fā)系統(tǒng)的命令行中工作,如果你不熟悉使用命令行工具,那么你得多下功夫?qū)W習(xí)了。

我們強烈建議你將Android工具所在的路徑添加到操作系統(tǒng)的環(huán)境變量中,這樣就可以直接敲名字運行相關(guān)的工具了,否則每次都要在命令提示符后面輸入完整的文件路徑,現(xiàn)在在Android SDK中有兩個工具目錄:/tools和/platform-tools,本文主要使用位于/tools目錄中的layoutopt工具,另外我想說的是,ADB工具位于/platform-tools目錄下。

運行l(wèi)ayoutopt

運行l(wèi)ayoutopt工具是相當簡單的,只需要跟上一個布局文件或布局文件所在目錄作為參數(shù),需要注意的是,這里你必須包括布局文件或目錄的完整路徑,即使你當前就位于這個目錄。我們來看一個簡單的例子:

D:\d\tools\eclipse\article_ws\Nothing\res\layout>layoutopt 

D:\d\tools\eclipse\article_ws\Nothing\res\layout\main.xml  

D:\d\tools\eclipse\article_ws\Nothing\res\layout\main.xml  

D:\d\tools\eclipse\article_ws\Nothing\res\layout>

注意,在上面的示例中,包含了文件的完整路徑,如果不指定完整路徑,不會輸出任何內(nèi)容,例如:

D:\d\tools\eclipse\article_ws\Nothing\res\layout>layoutopt main.xml  D:\d\tools\eclipse\article_ws\Nothing\res\layout> 

因此,如果你看不任何東西,則很可能是文件未被解析,也就是說文件可能未被找到。

使用layoutopt輸出

Layoutopt的輸出結(jié)果只是建議,你可以有選擇地在你的應(yīng)用程序中采納這些建議,下面來看幾個使用layoutopt輸出建議的例子。

無用的布局

在布局設(shè)計期間,我們會頻繁地移動各種組件,有些組件最終可能會不再使用,如:

 

 
 
 
 
  1.    
  2.  
  3.  
  4.  android:layout_width="match_parent"     
  5.  
  6.  android:layout_height="match_parent"      
  7.  
  8. android:orientation="horizontal">      
  9.  
  10.  
  11.  android:layout_height="wrap_content"         
  12.  
  13.  android:layout_width="wrap_content"         
  14.  
  15.  android:orientation="vertical">         
  16.  
  17.  
  18.  
  19.  android:layout_width="wrap_content"             
  20.  
  21.  android:text="TextView"              
  22.  
  23. android:layout_height="wrap_content">  
  24.  
  25.    

 

工具將會很快告訴我們LinearLayout內(nèi)的LinearLayout是多余的:
 

11:17 This LinearLayout layout or its LinearLayout parent is useless  

輸出結(jié)果每一行最前面的兩個數(shù)字表示建議的行號。

根可以替換

Layoutopt的輸出有時是矛盾的,例如:
 

 

 
 
 
 
  1.   
  2.  
  3.  
  4. android:layout_width="match_parent"      
  5.  
  6. android:layout_height="match_parent">      
  7.  
  8.  
  9. android:layout_height="wrap_content"          
  10.  
  11. android:layout_width="wrap_content"          
  12.  
  13. android:orientation="vertical">          
  14.  
  15.  
  16. android:layout_width="wrap_content"              
  17.  
  18. android:text="TextView"              
  19.  
  20. android:layout_height="wrap_content">          
  21.  
  22.  
  23. android:id="@+id/textView2"              
  24.  
  25. android:layout_width="wrap_content"              
  26.  
  27. android:layout_height="wrap_content">      
  28.  
  29.    

這個布局將返回下面的輸出:
 

5:22 The root-level  can be replaced with  10:21 This LinearLayout layout or its FrameLayout parent is useless  

第一行的建議雖然可行,但不是必需的,我們希望兩個TextView垂直放置,因此LinearLayout應(yīng)該保留,而第二行的建議則可以采納,可以刪除無用的FrameLayout。

有趣的是,這個工具不是全能的,例如,在上面的例子中,如果我們給FrameLayout添加一個背景屬性,然后再運行這個工具,第一個建議當然會消失,但第二個建議仍然會顯示,工具知道我們不能通過合并控制背景,但檢查了LinearLayout后,它似乎就忘了我們還給FrameLayout添加了一個LinearLayout不能提供的屬性。

太多的視圖

每個視圖都會消耗內(nèi)存,在一個布局中布置太多的視圖,布局會占用過多的內(nèi)存,假設(shè)一個布局包含超過80個視圖,layoutopt可能會給出下面這樣的建議:
 

-1:-1 This layout has too many views: 83 views, it should have <= 80!  -1:-1 This layout has too many views: 82 views, it should have <= 80!  -1:-1 This layout has too many views: 81 views, it should have <= 80!  

上面給出的建議是視圖數(shù)量不能超過80,當然最新的設(shè)備有可能能夠支持這么多視圖,但如果真的出現(xiàn)性能不佳的情況,最好采納這個建議。

嵌套太多

布局不應(yīng)該有太多的嵌套,layoutopt(和Android團隊)建議布局保持在10級以內(nèi),即使是最大的平板電腦屏幕,布局也不應(yīng)該超過10級,RelativeLayout可能是一個解決辦法,但它的用法更復(fù)雜,好在Eclipse中的Graphical Layout資源工具更新后,使得這一切變得更簡單。

下面是布局嵌套太多時,layoutopt的輸出內(nèi)容:
 

-1:-1 This layout has too many nested layouts: 12 levels, it should have <= 10!  305:318 This LinearLayout layout or its RelativeLayout parent is possibly useless  307:314 This LinearLayout layout or its FrameLayout parent is possibly useless  310:312 This LinearLayout layout or its LinearLayout parent is possibly useless  

嵌套布局警告通常伴隨有一些無用布局的警告,有助于找出哪些布局可以移除,避免屏幕布局全部重新設(shè)計。

小結(jié)

Layoutopt是一個快速易用的布局分析工具,找出低效和無用的布局,你要做的是判斷是否采納layoutopt給出的優(yōu)化建議,雖然采納建議作出修改不會立即大幅改善性能,但沒有理由需要復(fù)雜的布局拖慢整個應(yīng)用程序的速度,并且后期的維護難度也很大。簡單布局不僅簡化了開發(fā)周期,還可以減少測試和維護工作量,因此,在應(yīng)用程序開發(fā)期間,應(yīng)盡早優(yōu)化你的布局,不要等到最后用戶反饋回來再做修改。


分享標題:Android布局的優(yōu)化方案匯總
瀏覽地址:http://www.5511xx.com/article/dpeccgj.html