hierarchy_hierarchy 函数 - CSDN
精华内容
参与话题
  • Hierarchy Viewer使用详解

    万次阅读 2016-10-23 11:53:56
    Hierarchy Viewer工具提供了一个可视化界面显示布局的层次结构,让我们可以进行调试,从而优化界面布局结构。 2. 启动工具 启动方式有两种,一种是通过终端命令,输入hierarchyviewer,进行启动,第二种是通过打开...

    1. 功能

    Hierarchy Viewer工具提供了一个可视化界面显示布局的层次结构,让我们可以进行调试,从而优化界面布局结构。

    2. 启动工具

    启动方式有两种,一种是通过终端命令,输入hierarchyviewer,进行启动,第二种是通过打开Android Device Monitor,添加hierarchyviewer视图。官网提示第一种方式已经过期,建议用第二种方式启动,不过并不影响使用,功能是一样的,只不过是将hierarchyviewer整合到了Android Device Monitor里面了而已

    2.1第一种方式:

     

    2.2 第二种方式:


    3. 设备连接

    如果你是用的模拟器或者开发版手机的话则可以直接进行连接调试了,如果不是的话,官方提供了两种方式,进行连接真机调试:

    3.1 通过第三方库,安装和配置ViewServer,也是目前我在使用的方式,工具地址:https://github.com/romainguy/ViewServer,配置步骤比较简单,主要分为如下三步:

    3.1.1 添加依赖,外层build.gradle文件,添加工具远程仓库地址;内层build.gradle文件,添加依赖:

    allprojects {
        repositories {
            jcenter()
            maven { url "https://jitpack.io" }
        }
    }

    dependencies {
        ...................................
        compile 'com.github.romainguy:ViewServer:017c01cd512cac3ec054d9eee05fc48c5a9d2de'
    }

    3.1.2 在manifest文件申请网络权限

      <uses-permission android:name="android.permission.INTERNET"/>
    3.1.3 在应用中需要调试的Activity中添加如下代码,启动ViewServer, 这样就可以与hierarchy viewer通信了:

    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // Set content view, etc.
            ViewServer.get(this).addWindow(this);
        }
    
        public void onDestroy() {
            super.onDestroy();
            ViewServer.get(this).removeWindow(this);
        }
    
        public void onResume() {
            super.onResume();
            ViewServer.get(this).setFocusedWindow(this);
        }

    3. 2 第二种方式,通过设置环境变量,export ANDROID_HVPROTO=ddm,我用小米note, 5.0系统的手机,发现并无效果,简书上有童鞋用Nexus的手机时可以正常使用呢的,目前暂未找到原因。

    4. 分析页面布局性能

    4.1 选择一个节点,点击右上角的的按钮,就可以获取到布局绘制的时间,如图:


    这里我们主要关注下面的三个圆圈,从左到右依次,代表View的Measure, LayoutDraw的性能,不同颜色代表不同的性能等级:

    1) 绿表示该View的此项性能比该View Tree中超过50%View都要快;例如,一个绿点的测量时间意味着这个视图的测量时间快于树中的视图对象的50%

    2)黄表示该View的此项性能比该View Tree中超过50%View都要慢;例如,一个黄点布局意味着这种观点有较慢的布局时间超过50%的树视图对象。

    3)红表示该View的此项性能是View Tree中最慢的;例如,一个红点的绘制时间意味着花费时间最多的这一观点在树上画所有的视图对象。


    4.2 测量结果分析

    红色节点是代表应用性能慢的一个潜在问题,下面是几个例子,如何来分析和解释红点的出现原因?

    1)如果在叶节点或者ViewGroup中,只有极少的子节点,这可能反映出一个问题,应用可能在设备上运行并不慢,但是你需要指导为什么这个节点是红色的,可以借助Systrace或者Traceview工具,获取更多额外的信息;

    2)如果一个视图组里面有许多的子节点,并且测量阶段呈现为红色,则需要观察下子节点的绘制情况;

    3)如果视图层级结构中的根视图,Messure阶段为红色,Layout阶段为红色,Draw阶段为黄色,这个是比较常见的,因为这个节点是所有其它视图的父类;

    4)如果视图结构中的一个叶子节点,有20个视图是红色的Draw阶段,这是有问题的,需要检查代码里面的onDraw方法,不应该在那里调用。


    5. 布局常见问题与优化建议

    1)没有用的父布局时指没有背景绘制或者没有大小限制的父布局,这样的布局不会对UI效果产生任何影响。我们可以把没有用的父布局,通过<merge/>标签合并来减少UI的层次;

    2)使用线性布局LinearLayout排版导致UI层次变深,如果有这类问题,我们就使用相对布局RelativeLayout代替LinearLayout,减少UI的层次;


    3)不常用的UI被设置成GONE,比如异常的错误页面,如果有这类问题,我们需要用<ViewStub/>标签,代替GONE提高UI性能。


    资料参考:

    https://developer.android.com/studio/profile/hierarchy-viewer-results-walkthru.html

    http://2dxgujun.com/post/2014/09/27/Improving-Layout-Performance.html

    展开全文
  • View Hierarchy

    2014-09-29 16:25:48
    view hierarchy是用来说明在window中的view之间的关系的。  可以把view hierarchy认为是一棵翻转的tree structure,而window就是这棵树的最上面的节点(根节点)。树的下面就是父子view之间的关系。从视觉上来看...

    ResourceFrom:http://blog.sina.com.cn/s/blog_6de189920101jn4y.html

    view hierarchy是用来说明在window中的view之间的关系的。 

    可以把view hierarchy认为是一棵翻转的tree structure,而window就是这棵树的最上面的节点(根节点)。树的下面就是父子view之间的关系。从视觉上来看,view hierarchy就是一个封闭的结构,就是一个view包含一个或多个view,而window包含所有的view。


    view hierarchy同时也是responder chain的重要部分,当我们需要渲染window中的内容的时候,应用程序的框架会用它来检测views的layer的层次,来决定需要渲染的部分,从而来避免做一些无用功,这点至关重要。


    接下来来看下在view hierarchy中view的三个属性的定义关系

    1.superview,view的父视图

    2.subviews,view的子视图

    3.window,包含view的window


    关于第三个window属性,在iOS和Mac中是有区别的。

    在iOS中window是一个view,在Mac中却不是。

    在Mac中window有一个单独contentView,所有的子视图是包含在contentView中的。

    在iOS中,window自己扮演了contentView的角色,所以子视图全部包含在window中。


    如下图


    在开发的时候,有时候会遇到

    1.ios attempt to present whose view is not in the window hierarchy

    2.Warning: Attempt to present on whose view is not in the window hierarchy!

    等等这样类似的提示,只要里面提示有 window hierarchy,都是view hierarchy的理解不到位导致的。

    上面的问题都是在一个controller的view还没加到window上的时候又取present另外一个controller,这就相当于在盖楼,2楼还没盖完,直接去盖3楼了,这样肯定是不行。

    遇到上面的问题 最直接的解决方法就是在controller的viewDidAppear里面去调用present。这样可以确保view hierarchy的层次结构不乱。

    展开全文
  • Hierarchy

    2019-09-30 05:50:25
    Using Example 2.2, there are three different activities at the sender site and another three activities at the receive site. 使用2.2示例,在发送端网址有三次不同的活动,同样,在接收端也有三次活动。...

    Using Example 2.2, there are three different activities at the sender site and another three activities at the receive site.

    使用2.2示例,在发送端网址有三次不同的活动,同样,在接收端也有三次活动。

    The task of transporting the letter between the sender and the receiver is done by the carrier. 

    从发传者到接收者之间的信件传输任务,被载体完成。

    carrier /k'/ (carriers) 1. [N-count] carrier is a vehicle  that is used for carrying people, especially soldiers, or things.

    carrier是一辆被用来装人的车辆,特别是,士兵,或者货物。

    2.【n-count】 A carrier is a passenger airline . Carrier是一种乘客空机,

    转载于:https://www.cnblogs.com/666638zhangqiang/p/4778242.html

    展开全文
  • unity 如何快速展开Hierarchy所有层次

    千次阅读 2019-11-28 15:57:11
    1,选中所有要展开的父物体。 2然后按下快捷键:Alt+向右方向的键 3 收起来则是 Alt+

    1,选中所有要展开的父物体。

    2 然后按下快捷键:Alt+向右方向的键

    3 收起来则是  Alt+\leftarrow

    展开全文
  • 布局优化工具Hierarchy Viewer

    千次阅读 2018-09-14 12:04:34
    版权声明:本文为博主原创或汇集文章,欢迎注明来源转载。http://blog.csdn.net/u012792686 https://blog.csdn.net/u012792686/article/details/72921379 ...
  • 我用官方文档的例子来解释一下opnecv中contour hierarchy的概念: 比如说,在一张图片里会有好几个物品,它们可能位于不同的位置,也可能A物体嵌在B物体里,这时候我们可以把A物体称作父体(parent),B物体称为...
  • 直接下载层级不可用 1.expand 要下载的层级 2.Ctrl+P 进入打印界面 3.System->List->Save->Local File
  • 该文档详细讲解了Android开发当中的UI分析工具Hierarchy Viewer的使用方法
  • Python层次聚类sci.cluster.hierarchy.linkage函数详解

    万次阅读 多人点赞 2020-08-26 16:25:58
    1 函数原型:scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean', optimal_ordering=False)函数功能:进行层次聚类/凝聚聚类。参数:y: 可以是1维压缩向量(距离向量),也可以是2维观测向量...
  • 助力快速掌握编辑器对 Unity Hierarchy 的扩展、及效果展示 为初学者节省宝贵的时间,避免采坑! Unity编辑器扩展、Unity右键菜单、Unity Editor中文教程,Unity Hierarchy 中文教程 为了开发的便利性,我们经常要...
  • 感谢点评与关注,欢迎转载与分享。 勤奋努力,持之以恒! ...在这写出自己也就当边学习边记录了,也希望能帮到大家。...层级视图 (Hierarchy) 层级视图 (Hierarchy) 包含当前场景中的每个游戏对象 (GameObject
  • 问题解决 The hierarchy of the type is inconsistent

    万次阅读 多人点赞 2012-10-30 12:49:37
    由于我在myeclipse里建了两个JAVA PROJECT项目,分别是A projiect和B projiect,项目A引用了一些JAR包,然后项目B引用了项目A,但是B没有...The hierarchy of the type is inconsistent 解释为:层次结构的类型不一致
  • 解决The hierarchy of the type is inconsistent错误,自己的类继承于某个类,这个类或者这个类继承的类或者再往上继承的某个类所在的jar包没有被引入。
  • 在使用安卓模拟器定位页面元素时启动uiautomatorviewer.bat ,但是报错: Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncExceptio解决办法:关闭appium
  • root of context hierarchy

    万次阅读 2018-05-07 16:51:41
    使用idea生成spring boot项目时,出现下面错误。发现应用无法起来,这是由于没有使用spring boot自带的tomcat服务器,使用自己本地的服务器(只需在pomw文件加入tomcat的依赖)如下: 问题是由于scope的属性配置...
  • There is a cycle in the hierarchy

    万次阅读 2014-04-29 10:02:37
    在使用JSONObject.fromObject的时候,出现“There is a cycle in the hierarchy”异常。意思是出现了死循环,也就是Model之间有循环包含关系;解决办法:使用setCycleDetectionStrategy防止自包含代码:JsonConfig ...
  • 以前遇到这个问题的时候,自己也百度过,重启eclipse,重启电脑,结果都还是没能解决这个问题。 后来,问了一个大神,才轻松的得以解决。 解决方法:在cmd命令窗口中输入 adb root(如果手机可以root的话)即可...
  • 查看日志后发现报了root of context hierarchy 一顿查询之后发现是项目启动的问题: 我直接是用java -jar …jar的方式启动的。----这种方式启动会随着远程中断的关闭而结束进程 那就换种启动方式: nohup java -jar ...
  • Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncExceptio 在网上找了很多办法都无效 解决办法: 1、在cmd命令窗口中输入 adb root 即可。(无效) 2、重启手机无效(无效) 3、重新把手机拔...
  • 今天又发现一个好工具 dump View Hierarchy
1 2 3 4 5 ... 20
收藏数 95,611
精华内容 38,244
关键字:

hierarchy