Android嵌套線性布局玩法坑解決方法_第1頁
Android嵌套線性布局玩法坑解決方法_第2頁
Android嵌套線性布局玩法坑解決方法_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Android嵌套線性布局玩法坑解決方法目錄前言詳解為什么會讓性能降低的怎么嚴重呢?

前言

嵌套線性布局大家應該都用的非常熟悉,畢竟這玩意理解起來也是真的簡單,而且如果熟悉的話這玩意開發(fā)起來的效率也是真的快,不用一下一下拖動。

但是這個玩意有個非常的問題,就是性能問題,而且人家性能問題是指數(shù)級別增加的,怎么回事呢,因為你如果一層一層的嵌套布局的話,系統(tǒng)在繪制的時候就是指數(shù)級別的繪制次數(shù),如果你只是嵌套了倆層那都還能接受的玩,如果你一個界面控件很多,然后你又嵌套幾層線性布局,那這個時候性能就十分低下了。

詳解

看下面的代碼,就是一個十分典型的線性嵌套布局,用起來是很爽,無腦套,但是系統(tǒng)可不少受

xmlversion="1.0"encoding="utf-8"

FrameLayoutxmlns:android="/apk/res/android"

xmlns:app="/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

LinearLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

LinearLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

LinearLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

LinearLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

LinearLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

/LinearLayout

/LinearLayout

/LinearLayout

/LinearLayout

/LinearLayout

/FrameLayout

為什么會讓性能降低的怎么嚴重呢?

結論是繪制次數(shù)太多,主要是線性布局會造成這個問題,線性布局會對子view進行二次測量甚至三次測量。

比如:

1.LinearLayout寬度為wrap_content,因此它將選擇子View的最大寬度為其最后的寬度

2.但是有個子View的寬度為match_parent,意思它將以LinearLayout的寬度為寬度,這就陷入死循環(huán)了

3.因此這時候,LinearLayout就會先以0為強制寬度測量一下子View,并正常地測量剩下的其他子View,然后再用其他子View里最寬的那個的寬度,二次測量這個match_parent的子View,最終得出它的尺寸,并把這個寬度作為自己最終的寬度。

4.這是對單個子View的二次測量,如果有多個子View寫了match_parent,那就需要對它們每一個都進行二次測量。

5.除此之外,如果在LinearLayout中使用了weight會導致測量3次甚至更多,重復測量在Android中是很常見的

所以我們的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論