Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android應用程序優化之布局優化

android應用程序優化之布局優化

編輯:關於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初始化進去。否則會報空指針錯誤。

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

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

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved