為了使用Android SDK提供的布局優(yōu)化工具撰茎,需要使用命令行。
我們強烈建議您將Android工具路徑添加到操作系統(tǒng)的路徑設置中。 這將使得通過名稱運行特定工具更容易狮含,而不必給出其文件位置的完整路徑柒傻。 Android SDK中現在有兩個工具目錄:/ tools和/ platform-tools孝赫。 layoutopt工具是本教程中使用的主要工具,位于/ tools目錄中诅愚。 (例如寒锚,可以在/ platform-tools目錄中找到ADB工具。)
運行l(wèi)ayoutopt工具
運行l(wèi)ayoutopt工具是簡單的命令行選項违孝。 只需使用單個布局文件或布局文件目錄作為選項運行它刹前。
注意,你必須包括所討論的布局文件或目錄的完整路徑雌桑,即使它在當前工作目錄中喇喉。
沒有發(fā)現任何問題的layoutopt:它與單個布局文件或布局文件的目錄作為選項。
如果不包括布局文件的完整路徑校坑,則輸出不顯示任何內容:
檢查結果示例
layoutopt的結果只是建議拣技。 讓我們來看看運行l(wèi)ayoutopt工具可能產生的建議的幾個例子。
無用的布局
我們在布局設計中嘗嘗會出現一些未使用或放棄使用的控件耍目。例如:
該工具告訴我們膏斤,LinearLayout中的LinearLayout是不必要的:
11:17 This LinearLayout layout or its LinearLayout parent is useless
根布局可被替代
輸出:
5:22 The root-level <FrameLayout/> can be replaced with <merge/>
10:21 This LinearLayout layout or its FrameLayout parent is useless
結合兩條建議,由于我們希望兩個TextView垂直排列邪驮,因此LinearLayout應該保留莫辨。基于第二條建議毅访,我們可以刪除無用的FrameLayout而不是替換為merge沮榜。
過多Views
布局中的每個View都需要占用內存,在布局中放置過多的View喻粹,布局將占用大量內存蟆融。假如,有一個超過80個View的布局守呜。layoutopt工具可能顯示以下輸出:
-1:-1 This layout has too many views: 83 views, it should have <= 80!
-1:-1 This layout has too many views: 82 views, it should have <= 80!
-1:-1 This layout has too many views: 81 views, it should have <= 80!
過多Levels
類似型酥,布局也不應該太深層次的嵌套山憨。建議將布局保持在10級以下∶崮可以使用RelativeLayout解決深層次的布局嵌套萍歉。
-1:-1 This layout has too many nested layouts: 12 levels, it should have <= 10!
305:318 This LinearLayout layout or its RelativeLayout parent is possibly useless
307:314 This LinearLayout layout or its FrameLayout parent is possibly useless
310:312 This LinearLayout layout or its LinearLayout parent is possibly useless