Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat。它是Android自带的非常有用而且使用简单的工具,可以帮助我们更好地检视和设计用户界面(UI),绝对是UI检视的利器,但是好像很少有人提它,难道是因为太简单?

具体来说主要功能有2个:

1.       从可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计;

2.       结合debug帮助观察特定的UI对象进行invalidate和requestLayout操作的过程。

1.       基本使用方法

(1)hierarchyviewer的使用非常简单,启动模拟器或者连接上真机后,启动hierarchyviewer.bat,会看到下面的界面,Devices里列出了可以观察的设备,Windows里列出的是当前选中的设备的可以用来显示View结构的Window:

选中某个想要观察的Window,比如上面列出的com.android.launcher/com.android.launcher.Launcher项,然后点击菜单栏的Load View Hierarchy,就进入Layout View,由于要解析相关Window,所以这个过程要几秒钟,左边列出的是当前窗口的树型布局结构图,右边列出的是当前选中的某个子View的属性信息和在窗口中的位置:

需要注意的是:Layout View列出的View结构是从视图的根节点开始的,比如针对Launcher使用的layout,它的底层基础布局DragLayer实际上是放在一个FrameLayout里的,该FrameLayout又是被PhoneWindow的DecorView管理的。

(2)点击界面左下角类似九宫格的按钮,就进入了Android称之为Pixel Perfect View的界面,这个界面里主要是从细节上观察UI效果:

左边是浏览视图,中间是全局的视图,右边是当前关注的地方的细节放大,是像素级别的,对于观察细节非常有用。

Refresh Rate用来控制View多久从模拟器或者真机上更新一次视图数据。

Zoom就是放大局部细节用的,细节显示在最右边的视图上。

Overlay比较有意思,主要用来测试在当前视图上加载新的图片后的效果,点击Load…选择图片后,可以控制在当前界面上显示的透明读,滑动0%~100%的控件即可。如果选择了Show in Loupe,右侧的放大视图也会将加载的图片的细节结合着透明度显示出来。不过目前这个Overlay做的比较简单,合成的图只能从界面的左下角为原点画出来,不能移动。

(3)在Layout View中,选中一个view的图示,点击工具栏的Display View,就可以看到这个view的实际显示效果,可以点选Show Extras,这个功能也比较实用,可以显示出该View中不同元素显示的边界,帮助我们检查是否正确。

2.       Hierarchyviewer的invalidate和requestLayout功能

对于Android的UI来说,invalidate和requestLayout是最重要的过程,Hierarchyviewer提供了帮助我们Debug特定的UI执行invalidate和requestLayout过程的途径,方法很简单,只要选择希望执行这两种操作的View点击按钮就可以。当然,我们需要在例如onMeasure()这样的方法中打上断点。这个功能对于UI组件是自定义的非常有用,可以帮助单独观察相关界面显示逻辑是否正确。

android HierachyViewer使用相关推荐

  1. 一些手机不能使用HierachyViewer和android.util.Log的问题解决

    http://blog.csdn.net/xiaol_zhong/article/details/35660275 http://stackoverflow.com/questions/1064730 ...

  2. Android 实用工具Hierarchy Viewer实战

    在Android的SDK工具包中,有很多十分有用的工具,可以帮助程序员开发和测试Android应用程序,大大提高其工作效率.其中的一款叫Hierachy Viewer的可视化调试工具,可以很方便地在开 ...

  3. android防谷歌滑动效果,谷歌是如何做到这一点的?在Android应用程序中滑动ActionBar...

    事实上,有一种方法可以做到这一点.即使没有实施自己的ActionBar. 看看hierachyviewer吧!(位于工具目录中) 还有的DecorView,并且LinearLayout作为一个孩子.这 ...

  4. Android高级之十二讲之如何降低应用内存消耗

    安卓应用的内存往往是有限的,从开始的8M到16M,24M,32M,48M,64M等逐步变大,但内存的变大是由于分辨率的提高导致,并不意味着可以随意声明使用内存,而不及时回收(即使Java有自己的垃圾回 ...

  5. Android Platform 3.0 SDK和Eclipse ADT安装记录三

    有用的链接(有些需要Android NDK) 一.游戏库.开发库 1. ONScripter on Anroid のページ http://onscripter.sourceforge.jp/andro ...

  6. Android Hierarchy Viewer

    Android的SDK工具包中,有很多十分有用的工具,可以帮助程序员开发和测试Android应用程序,大大提高其工作效率.其中的一款叫Hierachy Viewer的可视化调试工具,可以很方便地帮助开 ...

  7. Android应用性能优化最佳实践.2.3 布局优化

    2.3 布局优化 布局是否合理主要影响的是页面测量时间的多少,我们知道一个页面的显示测量和绘制过程都是通过递归来完成的,多叉树遍历的时间与树的高度h相关,其时间复杂度为O(h),如果层级太深,每增加一 ...

  8. 抓取android ui原理,Android抓取文字、文字位置的分析

    引文: 因为我弃用原来ATX框架中的uiautomator的东西,所以现在要把 UiSelector().text("XXX")这部分的功能给重新实现下. 所以这篇文章介绍的是抓取 ...

  9. android Tools之Hierachy Viewer的使用

    Android的SDK工具包中,有很多十分有用的工具,可以帮助程序员开发和测试Android应用程序,大大提高其工作效率.其中的一款叫Hierachy Viewer的可视化调试工具,可以很方便地帮助开 ...

  10. Android 锁屏原理,锁屏框架与锁屏开发

    Android框架浅析之锁屏(Keyguard)机制原理 锁屏.状态栏.Launcher---姑且称之为"IDLE"小组,或许叫手机美容小组 1.分析锁屏界面的组成 : 2.基于源 ...

最新文章

  1. Spark Catalyst
  2. C# 中串口通信 serialport1.DataReceived 函数无法触发或者出发延时等等问题解决方法
  3. oracle中over 语法,Oracle语法之OVER(PARTITIONBY..)及开窗函数
  4. 家庭组计算机无法,【求助】Windows无法从该家庭组中删除你的计算机
  5. java socket android_Android:这是一份很详细的Socket使用攻略
  6. 怎么改变表单option标签直接字体大小_不起眼却非常重要的表单交互
  7. 苹果新技术或让无线充电更便捷
  8. xtrabackup备份还原MySQL数据库
  9. (18)FPGA面试技能提升篇(CACHE、MMU、DMA)
  10. ASP.NET MVC 4 (五) 视图
  11. 吴恩达 Drive.ai 因经营困难“卖身”苹果
  12. Android系统启动过程详解
  13. Bugku-Web-xxx二手交易市场
  14. Redis Zadd 命令 Redis 有序集合(sorted set)Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,那么更新
  15. Python3 学习第十二弹: 补充something
  16. GetWindowRect与GetClientRect 的区别
  17. arduino mega针脚_Arduino MEGA中文数据手册
  18. (社会工程学攻击)安全书籍中的重要笔记摘要
  19. 第一次梦见这么多的狗
  20. Android显示横幅样式通知

热门文章

  1. 计算机技术中储存容量最大的单位,计算机中最大单位是什么
  2. 康佳LED55K55U电视板砖的拯救历程
  3. 使用 Python 合并地图瓦片
  4. 【python 走进NLP】机器学习和深度学习情感分类模型
  5. 0x0000006B蓝屏解决方法
  6. 会议室管理系统源码分享-Spring mvc+mybatis+jpa+mysql+bootstrap
  7. 黑苹果 macos 教程
  8. 磁盘精灵linux,磁盘空间-逻辑卷
  9. Android Studio开发引入Speex
  10. Python制作词云