1.Hierarchy Viewer
2.Lint
(1)Hierarchy Viewer
- Hierarchy Viewer是Android自带的一款可视化调试工具,用来检查Layout嵌套及绘制时间。以可视化的布局角度直观获取Layout布局设计和各种属性信息。
注:由于Android安全考虑Hierarchy Viewer只能连接Android开发手机或模拟器。
接下来介绍如何使用Hierarchy Viewer。
- 构建一个页面,启动应用然后进入这个页面。
- 打开Hierarchy Viewer
我只直接在SDK打开的Android Device Monitor中打开的Hierarchy Viewer,由于商业手机不支持连接,我使用的模拟器。打开页面如下:
双击图中具体的Activity页面则能看到如下图:
可以看到几个窗口:
- Windows:显示当前设备信息,以及当前设备的所有页面信息。
- View Properties: 当前选中View的属性
- TreeView:把Activity中所有的控件的层次从左到右显示出来,最左边的是最底层的控件。
- Tree Overview:全局概览,以缩略图的方式显示整个应用中各控件的层次关系,并且框出TreeView窗口中显示的部分的位置,如果一个页面显示层级过多,可以通过鼠标移动这个区域。
- Layout View:整体Layout布局,以手机屏幕上真实位置呈现出来,在TreeView中选中某个控件时,会在Layout View用红色的框标注。
- 使用Hierarchy Viewer
-
上面已经说了在Windows窗口页双击要展示的页面就可以在TreeView中看到布局层级。
-
查看某个View耗时:选中View,然后点击上面的按钮如下图:
就可以看到Tree View中增加了属性,单击查看:
108views表示是这个树下面还有108个view,第108个就是其本身,如果是1表示是这个树下的最后一个控件,下面的时间表示Measure、Layout、Draw三个阶段的耗时。最后是三个带颜色的圈。颜色表示这个控件占用的时间百分比,如果是绿色的,表示该控件在该阶段比其他50%控件要快,黄色表示比其他50%控件速度要慢,红色表示该控件在该阶段的处理速度是最慢的。就需要注意了。 -
上面介绍了Hierarchy Viewer的使用方法,但是一个一个view的去分析效率非常低。所以再介绍一个另外一个工具Lint,用于检查所有页面的层级,并把深度高于N(自定义)的页面输出,然后通过Hierarchy View工具来具体分析。
(2)布局层级检查 Lint
Android Lint 是 Android SDK Tools 16(ADT 16)之后引入的代码检查工具,通过代码静态检查,可以发现潜在的代码问题,并给出优化建议。Android-Lint 检查工具使用的方式有以下两种:
- 命令行使用脚本执行。
- 在 IDE 中使用视图化工具。
Lint 的检查结果分为 6 类,如图所示。
- Correctness(正确性)
- Security(安全性)
- Performance(性能)
- Usability(可用性)
- Accessibility(可达性)
- 国际化
问题的严重程度(severity)从高到低依次是: - Fatal
- Error
- Warning
- Information
- Ignore
扫描规则和缺陷级别可以在 File→Settings→Editor→Inspections→Android Lint 中配置
在 Android Studio 中启动 Lint,从菜单栏选择 Analyze→Inspect Code,进去后可以指定扫描的范围,可以是整个工程,也可以是一个 Module 或单独的文件。启动扫描,扫描结果我们找到
Android -> Lint -> Performace -> Layout has too many views (布局控件过多,默认超过80会提示该错误)
Android -> Lint -> Performace -> Layout hierarchy is too deep(表示布局太深,默认层级超过10层会显示,可以自定义环境变量 ANDROID_LINT_MAX_DEEP来修改)
然后就可以根据扫描出来的文件去查看更改了。
接下来该分析布局优化的方法了。