1.優化布局層次
2.使用標籤復用布局檔案
<includelayout="@layout/titlebar"/>
關於標籤的第乙個比較簡單的用法
關於使用標籤的一些限制:
(1)它只能作為xml布局宣告的root元素來使用;
(2)使用它來inflate乙個布局時,必須指定乙個viewgroup例項作為其父元素並且設定attachtoroot屬性為true(參考 inflate(int, android.view.viewgroup, boolean)
方法的說明 )。
使用標籤
當在布局檔案中復用另外的布局時, 標籤能夠在布局層次消除多餘的檢視元素。例如,如果你的
主布局檔案是乙個垂直地包含兩個view的linearlayout,該布局能夠復用在其他布局中,而對任意包含兩個view的
布局檔案都需要乙個root view(否則, 編譯器會提示錯誤)。然而,在該可復用性布局中新增乙個linearlayout
作為root view,將會導致乙個垂直的linearlayout包含另外的垂直linearlayout。內嵌地linearlayout只能減緩
ui效率,其他毫無用處可言。
為了避免冗餘的布局元素,你可以使用作為復用性布局檔案地root view 。例如:
使用標籤的布局檔案:
<mergexmlns:android="">
<mergexmlns:android="">
現在,當你新增該布局檔案時(使用標籤),系統忽略< merge />節點並且直接新增兩個button去
取代節點。
優化布局層次
乙個通常的錯誤觀念就是使用基本的布局結構(例如:linearlayout、framelayout等)能夠在大多數情況下
產生高效率 的布局。 顯然,你的應用程式裡新增的每乙個控制項和每乙個布局都需要初始化、布局(layout)、
繪製 (drawing)。舉例來說:嵌入乙個linearlayout會產生乙個太深的布局層次。更嚴重的是,嵌入幾個使
用 layout_weight屬性的linearlayout 將會導致大量的開銷,因為每個子檢視都需要被測量兩次。這是反覆解析
1 、優化布局層次
同樣地,乙個複雜的網頁會延長載入時間,你的布局層次如果太複雜也能引發一些效率問題。本課程
告知你如何利用 sdk的工具去觀察你的布局以及發現布局過程的瓶頸問題。
2、使用標籤復用布局檔案
如果應用程式的ui在多處重複某些布局結構,本課程向你展示如何建立高效、可重用的布局結構,然後
以合適的 ui布局檔案包含它們。
3、按需載入view檢視
除了簡單地在另外的布局檔案中包括乙個布局元件,你可能想在需要的時候才將檢視顯現出來,有的時候
是在activity執行之後。本課程告訴你如何改進布局初始化行為---- 按需載入布局檔案的某個檢視。
4、如何使listview流暢滑動
如果你構建了乙個listview例項呈現那些包含複雜或者大容量資料的列表項,這可能會影響listview的流暢
滑動。本課程提供了一些如何讓滑動過程更加流暢的建議。
乙個好的實踐就是在你的布局檔案中使用lint工具去尋求可能優化布局層次的方法。lint已經取代了layoutopt
工具並且它提供了更強大的功能。一些lint規則如下:
1、使用組合控制項 --- 包含了乙個 imageview 以及乙個 textview 控制項的 linearlayout 如果能夠作為乙個
組合控制項將會被更有效的處理。
2、合併作為根節點的幀布局(framelayout) ----如果乙個幀布局時布局檔案中的根節點,而且它沒有背景
或者padding等,更有效的方式是使用標籤替換該< framelayout />標籤 。
<3、無用的葉子節點----- 通常來說如果乙個布局控制項沒有子檢視或者背景,那麼該布局控制項時可以被移除
(由於它處於 invisible狀態)。
4、無用的父節點 ----- 如果乙個父檢視即有子檢視,但沒有兄弟檢視節點,該檢視不是scrollview控制項或者
根節點,並且它沒有背景,也是可以被移除的,移除之後,該父檢視的所有子檢視都直接遷移至之前父檢視
的布局層次。同樣能夠使解析布局以及布局層次更有效。
5、過深的布局層次 ----內嵌過多的布局總是低效率地。考慮使用一些扁平的布局控制項,例如 relativelayout、
gridlayout ,來改善布局過程。預設最大的布局深度為10 。
android繪製view的過程
1 android繪製view的過程簡單描述 簡單描述可以解釋為 計算大小 measure 布局座標計算 layout 繪製到螢幕 draw 下面看看每一步的動作到底是什麼,第一步 當activity啟動的時候,觸發初始化view過程的是由window物件的decorview呼叫view 具體怎樣從...
Android效能調優 繪製優化
4.1 開發者中的 過渡繪製 檢測 4.2 開發者中的 gpu 檢測 5.1 布局優化 1.減少介面巢狀,對於負責的view可以使用constraintlayout 2.使用include復用布局 3.使用merge去除多餘層級 4.使用viewstub提高載入速度 按需才載入 顯示 5.減少不必要...
Android 獲取View繪製前的高度
在android開發過程中,我們可能需要獲取view繪製前的高度或者寬度,一種的可能情形是我們初始化的時候讓某個view是visible gone的,當我們觸發某個事件的時候需要它顯示並且希望有一些動畫效果。這時候我們就要獲取這個view顯示前即繪製前的寬度或者高度。原理很簡單,我們知道,view的...