1. 程式人生 > >Android 佈局優化

Android 佈局優化

Android佈局優化是效能優化的一個方面,主要是選擇適合的佈局 儘量減少巢狀的層數。

使用工具檢查巢狀層數

如何減少佈局的巢狀層數呢,一種是我們寫程式碼的時候自行注意,還可以使用工具來檢查佈局的層數
如果你是使用AS開發的話,你可以在 AS 工具欄中點選 Tools–>Android–>Android Device Monitor–>Hierarchy View
但是這個工具 如果使用的真機不能使用。只能使用模擬器或者開發機。

通過這個工具可以檢視佈局的層數,進而可以進行優化

在手機中 在開發者選項中有一個顯示GPU過度繪製 選項
選擇這個可以在手機上根據顏色顯示佈局的層數
這裡寫圖片描述

根據這個 我們可以看出自己佈局的巢狀層數 進而進行修改
需要注意的是 如果你給你的View設定了過多的backGround 也會導致過度的繪製 使用 draw-selector 比 color會多一層繪製 需要注意一下

優化佈局程式碼

在寫佈局的時候 有三個標籤可以用來優化佈局
include merge ViewStub
include 可以重用佈局
merge可以合併相同的巢狀層
ViewStub可以用來隱藏不需載入的佈局

之後 我們還可以把公共的佈局屬性提取到一個style中 複用 ,清晰佈局結構

最後 還有一個Android Lint工具 可以用來分析程式碼的結構 來提示相應的優化

Android Lint:
靜態程式碼分析工具,無需執行,無需測試用例 掃描整個專案,分析以下潛在的問題,分類指出問題描述、問題位置,並提供合理的修改建議(這是才是關鍵啊,不管有木有大問題,看看這些問題及描述,也能過把癮啊): ==================================== correctness 正確性 security 安全性 performance 效能 usability 可用性 accessibility 可達性 internationalization 國際化 ====================================
1)效能

佈局效能(以前是 layoutopt工具,可以解決無用佈局、巢狀太多、佈局太多、overdraw)

其他效能(如:draw/layout 時進行物件的宣告等)

2)未使用到資源、資源缺少(不同資源的適配)

3)有更高效能的資源替換 —- eg:SparseBooleanArray SparseIntArray

4)國際化問題(硬編碼)

5)圖示的問題(重複的圖示,錯誤的大小)

6)可用性問題(如不指定的文字欄位的輸入型)

7)manifest檔案的錯誤 – 未註冊activity service等等

8)記憶體洩露 — 如:handle的不當使用 。

9)佔記憶體的資源及時回收 — 如:TypedArray未回收資源等

還有幾點零散的 也在這記錄一下:

有選擇性的使用效能較低的控制元件
比如 當 既可以使用 LinearLayout 又可以使用 RelativeLayout時 要選用 LinearLayout 因為relativeLayout耗費的時間更多一點

使用 include標籤時 如果指定了 layout_*屬性 那麼 layout_width和layout_height屬性必須都存在 否則無效

ViewStub標籤 只會inflate一次 然後就不可以使用了,要使用 只能獲取裡面的View進行顯示隱藏了 並且 它不可以和merge一起使用

相關推薦

Android佈局優化之merge標籤詳解

我們都知道View的繪製流程需要經歷measure、layout、draw這個三個過程,如果佈局巢狀層次比較深的話,每一步都需要進行遍歷所有子View進行對應的measure、layout、draw過程,由此就會降低繪製效率,巢狀越多,耗時就越多;其實不光光只會影響view的繪製效率,同

Android佈局優化

安卓佈局優化 ​ 在進行Android應用的介面編寫時,如果建立的佈局層次結構比較複雜,View樹巢狀的層次比較深,那麼將會使得介面展現的時間比較長,導致應用執行起來越來越慢。Android佈局的優化是實現應用響應靈敏的基礎。遵循一些通用的編碼準則有利

Android 佈局優化 include+merge+ViewStub標籤詳解

include 、merge、ViewStub標籤詳解 一.include標籤 include標籤常用於將佈局中的公共部分提取出來供其他layout使用,以實現佈局模組化。 程式碼 1.1.公共Layout <?xml versio

Android 佈局優化

Android佈局優化是效能優化的一個方面,主要是選擇適合的佈局 儘量減少巢狀的層數。 使用工具檢查巢狀層數 如何減少佈局的巢狀層數呢,一種是我們寫程式碼的時候自行注意,還可以使用工具來檢查佈局的層數 如果你是使用AS開發的話,你可以在 AS 工具欄中

Android 佈局優化的幾個技巧

/** * Space is a lightweight View subclass that may be used to create gaps between components * in general purpose layouts. */ public final class Space

Android佈局優化

只是自己的總結,不詳細說明。 佈局優化,有兩個原則:少分配,多複用。 這裡介紹三個view:include,viewstub,merge。 include:通過該標籤,可以寫一份xml,在多處共用,減少資源浪費,如果有修改也只需在一個地方。 viewstub:可以理解為vi

android佈局優化之標籤的使用

學習android知識,卻經常忘記,是應該把知識總結為文字. -2017年6月21日07:51:19 1,<merge>標籤的作用 <merge />標籤用於減少View樹的層次來優化Android的佈局. 通過一個例子來理解這句話: 建立merg

android佈局優化的三大標籤

1、佈局重用 <include /> 標籤能夠重用佈局檔案,簡單的使用如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android佈局優化——抽象佈局:include、merge 、ViewStub

<font color="#000"><font face="Arial">((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);  

【UI佈局優化Android佈局優化的幾種方式

在Android中,佈局優化越來越受到重視,下面將介紹佈局優化的幾種方式,這幾種方式一般可能都見過,因為現在用的還比較多,我們主要從兩個方面來進行介紹,一方面是用法,另一方面是從原始碼來分析,為什麼它能起到優化的效果。 一、幾種方式的用法 1、佈局重用<

Android佈局優化之使用style提取重複使用屬性

如何優化佈局程式碼?使之看起來既簡潔又得到優化呢? 在專案中寫佈局的時候常常會遇到很多空間使用到了很多相同的屬性,例如一個TextView使用到了marginLeft和marginRight,其他很

Android 佈局優化(merge使用)

目的:減少佈局層數 效果:減少檢視樹中的節點個數,加快檢視的繪製,提高UI效能# 何時使用: 子檢視不需要指定任何針對父檢視的佈局屬性 假如需要在LinearLayout裡面嵌入一個佈局(或者檢視),而恰恰這個佈局(或者檢視)的根節點也是Linear

Andorid 詳解-佈局優化Android與Linux關係

這篇文章的由來——閒來無事隨便翻找了下Boss 招聘,發現一家公司,在騰訊創業大廈,距離住所很近。最主要的是招聘簡介裡所介紹的內容:團隊成員來自 北大,清華,北郵 BAT等知名網路公司。。。然後我膨脹的自信心,想嘗試下看看自己的水平,抽了一天調休,就過去了。結果 被完虐,各種完虐,第一個問題

Android基礎知識-佈局優化

在Android中介面繪製是比較費時的,尤其是巢狀比較複雜的介面,所以我們會用一些技巧來優化佈局。 Android提供了以下標籤或控制元件來供我們優化佈局: 1.<include> 這個標籤

Android效能優化佈局優化

          佈局優化可以通過減少佈局層級來提高,儘量減少使用效能低的佈局,LineaLayout的效率最高,在可以使用LinearLayout或者RelativeLayout時,選擇LinearLayout。因為RelativeLayout測量較為複雜,需要測量水平和

Android最佳效能實踐 四 ——佈局優化技巧

                在前面幾篇文章當中,我們學習瞭如何通過合理管理記憶體,以及高效能編碼技巧的方式來提升應用程式的效能。然而實際上介面佈局也會對應用程式的效能產生比較大的影響,如果佈局寫得糟糕的話,那麼程式載入UI的速度就會非常慢,從而造成不好的使用者體驗。那麼本篇文章我們就來學習一下,如何通過優

Android UI優化—使用Lint進行資源和冗餘UI佈局優化

Lint簡介 1、Lint 是Android Studio 提供的 程式碼掃描分析工具 2、Lint可以幫助我們發現程式碼結構/質量問題,同時提供一些解決方案 3、Lint 發現的每個問題都有描述資訊和等級 Android Studio 中使用 Lint的步驟 1、工具欄 -

android嚮導佈局優化

在文章中我們談到了android嚮導的實現方式,之前遺留了一個問題,嚮導按鈕與頁面內容重疊,在Map那個頁面特別明顯。 這個問題現在有解決方法了,其實很簡單,是佈局有點問題。 之前使用的是RelativeLayout,然後屬性都是fill_parent,因此就重疊了。 現在將佈局調整為LinerLa

[Android 效能優化系列]佈局篇之減少你的介面層級

轉載請標明出處(http://blog.csdn.net/kifile),再次感謝 在接下來的一段時間裡,我會每天翻譯一部分關於效能提升的Android官方文件給大家 效能優化之佈局篇: 題外話: 複雜的佈局,既會提高我們的設計難度,也會降低我們的程式碼效

Android 效能優化(二)之佈局優化

60fps VS 16ms 根據Google官方出品的Android效能優化典範,60幀每秒是目前最合適的影象顯示速度,事實上絕大多數的Android裝置也是按照每秒60幀來重新整理的。為了讓螢幕的重新整理幀率達到60fps,我們需要確保在時間16ms(100