Hierarchy Viewer

2017-09-18  本文已影响103人  sollian

有时应用的布局结构会减慢运行速度,为了帮助解决这个问题,Android SDK提供了Hierarchy Viewer工具。

Hierarchy Viewer可以帮助调试和优化UI。它提供了布局层次的可视化表示(View Hierarchy窗口),并带有每个节点的性能信息。它还提供了一个放大的视图(Pixel Perfect窗口)来进一步检测布局的像素。

使用Hierarchy Viewer

运行Hierarchy Viewer并选择一个窗口

使用Hierarchy Viewer步骤如下:

  1. 连接设备或者启动一个模拟器。为了保证安全,Hierarchy Viewer只能连接开发版本的Android系统。
  2. 安装要测试的应用。
  3. 运行应用,并保证UI可见。
  4. 启动位于<sdk>/tools/目录的hierarchyviewer。
  5. 启动后的窗口展示了一个设备和模拟器的列表。点击每一项左侧的箭头可以展开列表,会显示每个设备或模拟器正在运行的UI可见的应用。


    图1
  6. 选择要调试的应用,可以选择点击Load View Hierarchy查看视图层次,或者点击Inspect Screentshot查看Pixel Perfect窗口

关于View Hierarchy窗口

View Hierarchy窗口展示应用的视图对象。针对每一个视图对象,View Hierarchy窗口还展示了渲染性能数据。

在该窗口,你会看到4个窗格:

图2
  1. Tree View:左侧窗格展示了视图树。视图树可以检测单独的视图对象,或者视图对象的关系。要缩放视图树,可以使用底部的滑块,或者使用鼠标的滚轮。可以使用鼠标拖动视图树的显示范围。
    在底部Filter by class or id中输入类或者id值,可以搜索匹配的节点。匹配的节点,背景会由灰色变为蓝色。
    点击顶部的Save As PNG可以保存视图树的截图。
    点击Capture Layers可以将布局保存为PSD文件。每个视图会被保存为一个单独的PhotoShop图层。
  2. Tree Overview右上窗格为视图树的概览。
  3. Properties View右侧中部的窗格为属性窗口。
  4. Layout View右下窗格为布局视图。点击该窗格的一个视图对象,会高亮显示。每一块的边框颜色提供了额外的信息:
    • 粗红色:当前选择的视图。
    • 细红色:当前选择视图的父级。
    • 白色:表示该视图不是当前选择视图的父集或者子集。

在当前页面的UI变化后,View Hierarchy窗口不会自动更新。需要点击顶部的Load View Hierarchy参会刷新。

同样的,如果切换到了其他页面,窗口也不会自动更新。想要更新它,你需要首先点击Hierarchy Viewer工具左下角的按钮切换到第一次打开时的选择应用的窗口,然后重新加载视图。

使用视图树中的单个视图

视图树的每个节点代表一个单独的视图。一些信息是始终可见的:

图3
  1. 视图的类型,即所属的class
  2. 视图地址
  3. 视图的id值,即android:id
  4. 性能指标:三个带颜色的圆点,分别代表measure、layout、draw三个方法相对于其他视图的渲染速度:
  1. 视图索引:该视图在父级的索引,从0开始。

选择一个节点,会出现一个小窗口来展示额外的信息:

使用View Hierarchy调试

View Hierarchy窗口可以通过提供UI的静态显示来帮助调制应用。在你操作应用的时候,这个显示保持不变,直到你执行invalidate并request layout来重绘。

重绘步骤如下:

手动重绘允许你观察视图树,并在代码中通过单步调试检查单​​个View对象的属性。

通过View Hierarchy进行优化

View Hierarchy帮助你甄别减慢渲染速度的性能问题。你需要查看带有红色或者黄色圆点的节点,查看是一直慢还是某些条件会变慢。

注意慢性能不一定就是问题,尤其是对于ViewGroup对象。在ViewGroup有很多子View时渲染肯定会变慢。

使用Pixel Perfect

Pixel Perfect是一种用于检查像素属性并从设计图形中绘制UI的工具。

关于Pixel Perfect窗口

Pixel Perfect窗口展示了一个放大的当前设备或模拟器可见的屏幕图像。你可以使用它检测单独的像素属性。你也可以用它帮助你根据位图设计布局应用程序UI。

在该窗口,有如下窗格:

图4
  1. 视图对象窗格:在窗口的左侧。这是一个当前视图对象的层级列表。包括你的应用中的和系统产生的。
  2. Pixel Perfect放大镜窗格:在窗口中央。这是放大的屏幕图像。它被一个网格覆盖,网格的每个方块代表一个像素。点击一个方块,在底部会显示该像素的色值和坐标信息。
  3. Pixel Perfect窗格:在窗口右侧。这里展示了模拟器当前的屏幕显示。

使用Pixel Perfect叠加

你通常根据作为位图图像完成的设计构建UI。Pixel Perfect窗口可以帮助你加载一张图片叠加到当前的屏幕截图中。

使用步骤如下:

点击Save as PNG时,叠加层不会保存到最终的图片上。

可能遇到的问题

Hierarchy Viewer连接设备失败

系统必须是开发版本,有root权限,且View Server开启。
检验一台手机是否开启了View Server的办法为:

adb shell service call window 3

若返回值是:

Result: Parcel(00000000 00000000 '........') 

说明View Server处于关闭状态。
若返回值是:

Result: Parcel(00000000 00000001 '........')

说明View Server处于开启状态。
我们可以使用以下命令打开View Server:

adb shell service call window 1 i32 4939

使用以下命令关闭View Server:

adb shell service call window 2 i32 4939

注:本文翻译自Google官方文档。“Hierarchy Viewer连接设备失败”来自博友的博客http://www.cnblogs.com/fatfatdachao/p/4403282.html,仅记录一下

上一篇下一篇

猜你喜欢

热点阅读