Android UI 调试工具 Hierarchy Viewer

http://developer.android.com/intl/zh-cn/tools/performance/hierarchy-viewer/index.html

Hierarchy Viewer目前无法直接连接至商业手机,解决办法:

http://stackoverflow.com/questions/7801427/hierarchy-is-not-working-for-my-device

http://stackoverflow.com/questions/10647300/why-is-hierarchyviewer-not-working-for-samsung-galaxy-tab-7-0



Hierarchy Viewer 是 Android SDK 提供的,用来调试 UI 的工具,它位于 sdk 的 tools 目录下。

The Hierarchy Viewer application allows you to debug and optimize your user interface. It provides a visual representation of the layout's View hierarchy (the View Hierarchy window) with performance information for each node in the layout, and a magnified view of the display (the Pixel Perfect window) to closely examine the pixels in your layout.

Hierarchy Viewer 主要分两部分,View Hierarchy window 和 Pixel Perfect window.

现在在使用的时候会出现这样的提示,这是因为在连接的手机上没有获得到 view server 的信息。view server 是安装在手机端的一个服务,如果没有这个服务,Hierarchy Viewer 是没有办法连接成功的。

The standalone version of hieararchyviewer is deprecated.
Please use Android Device Monitor (tools/monitor) instead.

在文档上有这么一句话:"To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system."。只有在开发版的 Android 设备上才有这样的功能。坑爹啊~

如果使用 tools/monitor 的话,其实和传说中的 hieararchyviewer 还是差别挺大的。

View Hierarchy window

View Hierarchy window 打开后会有四个面板。四个面板上显示了非常丰富的信息。

  • Tree View
    Use Tree View to examine individual View objects and see the relationships between View objects in your UI.
    以一个树形结构展示 UI 上 View 的关系。

  • Tree Overview
    Use Tree Overview to identify the part of the view tree that is being displayed in Tree View.
    Tree View 的每个节点都是一个单独的 View ,当你选中某个节点的时候,就会显示这个 View 的一些信息。

    1. View class:View 的类名,比如 Button,TextView
    2. View object address : 地址
    3. View Object ID : andorid:id 的值
    4. Performance indicators : 这里会有三个颜色的小点点,三个分别代表 measure,layout,draw 的性能。绿色表示比树上的其他View快50%,黄色表示比其他的慢50%,红色表示这个 View 是整个树上最慢的。
    5. View index : 这个View在父级容器的索引位置。
  • Properties View
    With Properties View, you can examine all the properties without having to look at your application source.
    显示了每个 View 对象的具体属性。

  • Layout View
    这个没啥好说的。

Optimizing with View Hierarchy

View Hierarchy also helps you identify slow render performance. You start by looking at the View nodes with red or yellow performance indicators to identify the slower View objects. As you step through your application, you can judge if a View is consistently slow or slow only in certain circumstances.

Remember that slow performance is not necessarily evidence of a problem, especially for ViewGroup objects. View objects that have more children and more complex View objects render more slowly.

The View Hierarchy window also helps you find performance issues. Just by looking at the performance indicators (the dots) for each View node, you can see which View objects are the slowest to measure, layout, and draw. From that, you can quickly identify the problems you should look at first.

Performance indicators 是我们最应该关心的一个信息,这样我们可以找出在哪个控件上浪费的最多的运算。
另外树形结构也让我们很容易发现 UI 的布局是否过于冗余,嵌套是否过多。

Pixel Perfect window

Pixel Perfect window 的最大作用就是以像素级的界面展示你渲染的 UI 是否复合产品经理或者视觉设计师的需求。字体大小,显示区域。这是像素级的,这个工具的最大作用就是程序猿和产品经理吵架的导火索。

你丫的,跟你说了多少遍了,这个按钮再往左挪一像素,你!到!现!在!还!没!有!给!我!挪!

就是这样子。

SwissArmyKnife是什么SwissArmyKnife 是一款方便调试android UI工具,可以兼容所有android版本,不需要root权限。可以直接在android手机屏幕上显示当前Activity中所有控件(不管是否隐藏)的边界,内外边距大小,每一个控件大小,图片大小,字体颜色,大小,以及自定义信息。同时可以直接在屏幕上取色,另外还提供了直尺(单位为px和dp),圆角尺(单位dp)工具,可以直接测量大小。针对android开发者还提供了布局树查看功能,可以直接在手机屏幕查看当前Activity中所有控件层次信息等。可以通过滚动层级滚轮来控制只显示某一层级的信息,避免层级覆盖等。使用方式compile 'com.wanjian:sak:0.0.3'android 4.0及以上用户直接在application的onCreate中调用 com.wanjian.sak.LayoutManager.init(Application context) ,其他版本可以在activity的onResume中调用com.wanjian.sak.LayoutManager.init(Activity act)初始化。启动app后会在屏幕左上角看到一个 android logo ,点击即可进入功能界面。功能界面边框选项开启边框选项后可以在手机屏幕看到所有控件的边界,效果如下内外边距选项开启后会在屏幕看到如下效果半透明绿色代表内边距,PT表示上边内边距(padding top),PL表示左内边距(padding left),PT表示右内边距(padding right),PB便是下内边距(padding bottom)。半透明红色代表外边距, ML,MT,MR,MB分别表示左外边距,上外边距,右外边距,下外边距。所有边距单位都是dp(pt),android中会四舍五入,所有边距都是整数,所以可能跟设计图中有不超过1dp(pt)的误差。宽高选项开启后会看到控件的宽高,单位是dp(pt)图片宽高字体大小字体颜色16进制,ARGB强制图片宽高若开启图片宽高选项后看不到图片大小,可以尝试开启强制图片宽高选项。 ps 该选项可能会导致滑动卡顿自定义信息自定义信息用于android开发者调试使用,开发者可以为view设置setTag(com.wanjian.sak.CanvasManager.INFO_KEY,Object),设置后并开启自定义信息选项后就可以在控件左上角看到自定义的文本信息了。比如开发者想要在屏幕上看到TextView中有多少个文字,就可以这样使用textview.setTag(com.wanjian.sak.CanvasManager.INFO_KEY,textview.getText().length()),这样开启自定义信息选项后就可以在TextView上看到文字长度了。实时刷新开启实时刷新后当手指在屏幕上移动时就可以实时看到相关信息,开启实时刷新后可能会导致滑动卡顿,也可能导致触摸,点击等失效。层级信息可以通过滚动滚轮来控制只显示某一层次区间的信息,比如只想看ListView中子控件的大小,就可以滚动滚轮来控制只显示ListView子控件大小,具体调整成多少需要多次尝试。滚轮可以控件边框,宽高,布局树等等。直尺圆角尺,取色器开启后会在屏幕左上角显示,取色器刚开启时只会在屏幕左上角看到一个黑框,拖动到要取色的位置后抬起手机即可完成取色,取色器四个角可以获取所指像素的颜色值。取色器可以获取native页面每个像素颜色,也可以获取webview中每一个像素的颜色。布局树布局树可以双指缩放扩展用户可以方便的对SAK进行扩展,只需要继承自AbsCanvas并重新onDraw(Canvas canvas, Paint paint, ViewGroup viewGroup, int startLayer, int endLayer),或者继承自CanvasLayerAdapter并重写drawLayer(Canvas canvas, Paint paint, View view)又或者继承自CanvasLayerTxtAdapter区别在于onDraw中没对层级进行处理,drawLayer中的view已经是层级区间的view,CanvasLayerTxtAdapter提供了drawTxt(String txt, Canvas canvas, Paint paint, View view)方法,可以直接调用drawTxt就可以把txt绘制到当前view左上角。写完自定义的Canvas后还需要在OperatorView布局中加入布局代码,用于开启自定义的Canvas,比如在布局中加入开关按钮,并为按钮添加监听,开启后调用 Canvas
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值