android應用程式最佳化之布局最佳化

來源:互聯網
上載者:User

android應用程式最佳化之布局最佳化

在我們開發APP時不僅要在代碼實現上,做到對App的最佳化,而在我們的介面布局也有許多要最佳化的地方,如果布局寫的很low的話,系統載入布局的速度會十分的慢,使得使用者的體驗非常的不好,這篇文章主要是從我平時對布局的最佳化方面總結一下,我認為經常可以用到的布局最佳化方面的一些技巧和手段。

1.減少布局的嵌套,這一點也是最重要的

搞android的都知道,android的整個UI布局檔案最後也是要一層一層的解析成View對象的,如果層次太深的話,對導致遞迴的層次太深而極大的影響解析速度,所以,我們一定不能讓布局檔案的層次太深,要想做到布局檔案的層次不深,通常用到的手段有:1)使用RelativeLayout代替LinearLayout。2)編寫完布局檔案時,可以使用HieracyView工具檢查是否有多餘的無用布局,如果有,則一定要去掉無用的布局。

2.布局重用。

一些可以公用的布局我們不必要每次都重寫一遍,可以將其寫為一個獨立的布局檔案,最後使用include標籤將布局引用即可,然而,嚴格上來講,布局重用只是減少了我們代碼的編寫量,並不能達到對應用的最佳化作用,而且,在使用include時會很容易產生第一點中的無用父布局,如:

如何去除使用include代來的負作用,下面會有方案。

3.使用merge標籤去消除include標籤所引入的無用布局

使用merge時要注意,merge標籤只能是根布局,結合2,3兩點看一個樣本用法:

首先,建立一個merge標籤的根布局,代碼如下:

 

   ?xml version="1.0" encoding="utf-8"?>     
接著,使用include引入布局:

 

 

   
4.利用 ViewStub消極式載入一些用不到的布局,在一些場合取代android:visibility="gone"的用法,因為被gone掉的布局不斷是會同時建立對象的。那為什麼使用ViewStub就高效呢,拿源碼來說話,先看一下ViewStub源碼:

 

 

       @Override       protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {          setMeasuredDimension(0, 0);        }       

   @Override

    public void draw(Canvas canvas) {

    }


 

由onMeasure()方法和draw()方法可以看出, ViewStub的初始寬高都是零,所以他開始不會佔用空間,其次draw()方法也沒有執行任何的繪製,由這兩個方法就可以看出,ViewStub的確很高效。

在代碼中要操縱ViewStub的時候,要首先使用viewstub.inflate()方法,將其所擁有的View初始化進去。否則會報null 指標錯誤。

5.減少不同層間的背景重繪,例如,如果某個view父布局的背景已經設定為了白色,則不需要再為此view設定背景色,通過這個簡單的小技巧,可以非常多的提升速度。

6.如果整個App都使用了自訂的Title和background,則我們可以使用自訂的style,永久的去掉系統預設為我們的Activity所添加的title和background,也可以提高Activity的渲染速度。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.