一个通常的错误观念就是使用基本的布局结构(例如:LinearLayout、FrameLayout等)能够在大多数情况下
产生高效率 的布局。 显然,你的应用程序里添加的每一个控件和每一个布局都需要初始化、布局(layout)、
绘制 (drawing)。举例来说:嵌入一个LinearLayout会产生一个太深的布局层次。更严重的是,嵌入几个使
用 layout_weight属性的LinearLayout 将会导致大量的开销,因为每个子视图都需要被测量两次。这是反复解析
布局文件时重要的一点,例如在ListView或者GridView中使用时。
观察你的布局
Android SDK 工具箱包括一个称作“ Hierarchy Viewer”的工具,它允许你去在你的应用程序运行时分析
布局。通过使用这个工具,能帮助你发现你的布局效率上的瓶颈问题。
“ Hierarchy Viewer”工具允许你在已连接的设备或模拟器中选择正在运行的进程,然后呈现出布局层次树
(layout tree)。每个正方块下的交通灯(见下图) --- 红绿蓝表现出了在测量(measure)、布局(layout)、以及绘制
(draw)过程中的效率值,这能帮助你定位潜在的问题。
假设ListView 中的一项Item 存在如下(见图 1)布局 :
“Hierarchy Viewer”工具可以在 <sdk>/tools路径下找到。当打开它时,“ Hierarchy Viewer”工具显示了
所有可用的设备以及运行在这些设备上的进程。点击”Load View Hierarchy”来显示某个你选择的组件的UI布局
层次。举例来说,图2展现了图1的布局层次树。
在图2中,你可以直观看到这个三层的布局结构是存在一些问题的。点击项体现出了在每个测量(measure)、












