问题标签 [hierarchyviewer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
8283 浏览

android - hierarchyviewer 可以与 Nexus 以外的真实设备一起使用吗?

我真的很想hierarchyviewer和我的三星 Galaxy S 一起使用。有没有办法把它变成开发者手机?

0 投票
3 回答
8355 浏览

android - 调整大小后布局视图

我正在创建一个显示经常变化的值的网格。因此,我使用了一个 TextView,它在其内容发生变化时自动调整大小(Auto Scale TextView Text to Fit within Bounds)。调整大小发生,但视图布局不正确

调整大小后的布局

问题是,当我使用 HierarchyViewer 检查活动时,布局显示为我想要的。

层次查看器后的布局

我的猜测是 HierarchyViewer 在视图上调用 requestLayout() 或 invalidate() ,但我尝试过没有成功。此代码在主活动中调用,但没有任何效果。

我也尝试在调整大小后使视图无效。

TextView 的重力设置为中心,如果没有调整大小,它看起来没问题。

欢迎任何提示,在此先感谢!

0 投票
3 回答
37910 浏览

android - 如何将android工具目录添加到Windows 7路径?

我喜欢快速启动hierarchyviewer。目前我使用提示导航到 .... \AppData\local\android\android-sdk\tools\ 然后是 hierarchyviewer

我想我需要在 Windows 7 路径中添加一些东西,但我不知道该怎么做。

有什么建议么?

问候

0 投票
2 回答
1080 浏览

android - Android layout measuring time doubles with each step up the hierarchy

I'm analyzing a tablet UI in hierarchyviewer and I noticed the following pattern in measure times (starting from the base of the tree and moving up):

... ~40 ms ... ~80 ms ... ~160 ms ... ~320 ms ... ~640 ms ... ~1280 ms ...

I assumed the problem was LinearLayouts with nested weights, so I removed ALL LinearLayouts and weights in the whole hierarchy. Now I have this:

... ~40 ms ... ~80 ms ... ~160 ms ... ~160 ms ... ~160 ms ... ~310 ms ...

Better, but it still doubles every few levels. What could be causing this?

Here is the full hierarchy for this path (pardon the length... feel free to throw your best optimization tips at me):

*view time doubles

Any advice will be greatly appreciated! Thanks in advance.

TL;DR

Other than nested weights, what causes exponential increase in measure times?

0 投票
1 回答
519 浏览

android - 如何在hierarchyviewer中找到视图后面的代码

Android hierarchyviewer 为树形视图中的每个视图显示一个 ID。ID 是一个@符号后跟一个数字,例如@4051d698

android 文档中,这个数字的用途被解释为“指向查看对象的指针”。

假设一个人拥有像 AOSP 这样非常大的 android 项目的源代码。如何通过这个 ID 找出视图背后的 java 源代码是什么?

有没有我可以调用的方法告诉我绑定到这个指针的 R.java 条目是什么?

0 投票
2 回答
2583 浏览

android - 层次查看器不工作

当我运行hierarchyviewer时,我收到警告

SWT folder '/home/sharanu/work/android-ics-source/prebuilt/linux-x86_64/swt/swt.jar' does not exist. Please export ANDROID_SWT to point to the folder containing swt.jar for your platform.

然后我在设置ANDROID_SWT仍然相同的错误后尝试。但早些时候hierarchyviewer工作正常。我不确定为什么它现在不起作用。

请看图片。在此处输入图像描述

0 投票
1 回答
316 浏览

android - ListView 仅在附加 HierarchyViewer 时出现

我有一个扩展ListView的自定义。该列表是在这样的布局中定义的:AdapterCursorAdapter

HookedListView看起来像这样:

我遇到的问题是ListView内容没有出现在设备上,即使Cursor有项目,Adapter有项目,ListView本身也有项目。将HierarchyViewer附加到窗口确实可以使ListView项目在没有任何进一步干预的情况下出现,并且请求从 web 服务更新数据也是如此,这反过来会更新ContentProvider. Cursor我已经尝试为和设置内容观察器Adapter,并记录以确保将正确数量的项目设置为Adapter,并且一切都按预期工作。由于我们的自定义,我们已经在 List 上执行了一轮额外的布局MultiCoumnAdapter,计算第一轮之后的列数ListView布局传递(因此需要 a HookedListView)。

我尝试过使用标准CursorAdapter,而不是我自己的MultiColumnAdapter(模拟 a GridView,没有所有限制和错误),但这并没有改变任何东西。

FragmentActivity;的唯一内容 本身基本上什么也不做,只是从用于启动它Activity的附加组件中获取项目 ID ,并将其传递给,它在的布局 XML 中定义为唯一的元素。IntentFragmentActivity

所做的Fragment只是处理ContentProvider使用标准从应用程序获取数据CursorLoader。我们使用DataDroid来管理从 web 服务获取新数据。

有没有人对这里发生的事情有丝毫线索?似乎有些东西卡在ListView自己的代码中,直到我们更新底层Cursor......

0 投票
0 回答
234 浏览

android - 层次查看器中的预览与屏幕上的实际不同

我正在尝试创建一个可以从我的应用程序的底部边缘拉出的菜单,我通过创建一个覆盖RelativeLayout的自定义视图来做到这一点,这是我膨胀的relativelayout的xml:

还有自定义布局的代码:

问题是,每当我尝试在层次结构查看器上调试此布局时(在模拟器上运行应用程序时),我看到的视图位置与它们在屏幕上实际看到的位置完全不同,这里有一些屏幕截图可以更好地解释这种情况:
Hierarchy Viewer screenshot
Emulator screenshot
在这些屏幕截图中可以看到箭头,即在模拟器的截图中出现在屏幕底部边框的上方,根据 Hierarchy Viewer 是在上边距的正下方,这怎么可能?我在移动视图时做错了什么?
触发动画,使视图在模拟器屏幕上移动,不会改变 Hierarchy Viewer 预览。

0 投票
0 回答
3076 浏览

android - 如何提高视图层次和布局性能?

使用HierarchyViewer工具,您可以检查应用程序的布局层次结构。这很好用,我可以毫无问题地分析我的观点。我还使用Lint检查了我的来源。

优化 UI中所述,颜色表示视图可以测量、布局和绘制的速度。

性能指标:一组三个彩色点,表示此视图相对于树中其他视图对象的渲染速度。三个点代表(从左到右)渲染的度量、布局和绘制时间:

颜色表示以下相对性能:

  • 绿色:对于这部分渲染时间,此视图在树中所有视图对象的 50% 中较快。例如,测量时间的绿点表示此视图的测量时间比树中 50% 的视图对象更快。
  • 黄色:对于这部分渲染时间,此视图在树中所有视图对象的 50% 中较慢。例如,布局时间的黄点表示此 View 的布局时间比树中 50% 的 View 对象慢。
  • 红色:对于这部分渲染时间,此视图是树中最慢的视图。例如,绘制时间的红点表示该视图在树中的所有视图对象中绘制时间最长。

这意味着“仅”一个红色灯泡意味着与树中的所有其他项目相比,特定项目是最慢的。这并不意味着时间比 X 值慢,因此它被读取 - 就像你从 ping 分析工具中知道的那样,这些工具以交通信号灯的方式显示其结果,用于测量 ping 的“慢、中、快”次。

在检查了我的应用程序的不同视图后,我注意到输入字段比文本字段慢,然后LinearLayouts更快FragmentLayouts,还有一些类似的东西。然后,我搜索了有关改进某些视图的绘制时间的信息和帮助。但是那个搜索对我来说不是很满意。

谷歌优化你的用户界面告诉你:

使用视图层次结构进行优化

View Hierarchy 还可以帮助您识别缓慢的渲染性能。您首先查看带有红色或黄色性能指标的 View 节点,以识别速度较慢的 View 对象。当您逐步浏览您的应用程序时,您可以判断视图是始终缓慢还是仅在某些情况下缓慢。

请记住,性能缓慢不一定是问题的证据,尤其是对于 ViewGroup 对象。具有更多子级和更复杂视图对象的视图对象渲染速度更慢。

View Hierarchy 窗口还可以帮助您查找性能问题。只需查看每个 View 节点的性能指标(点),您就可以看到哪些 View 对象的测量、布局和绘制速度最慢。由此,您可以快速确定您应该首先查看的问题。

在我的选择中或多或少告诉你什么。在另一页Revise Your Layout有一个小例子,其中两个文本视图在 a 中LinearLayout并放在 aRelativeLayout中,这样一个层次结构就消失了。

在使用 Lint部分中可以找到更多提示:

  • 使用复合可绘制对象 - 包含 ImageView 和 TextView 的 LinearLayout 可以更有效地作为复合可绘制对象处理。
  • 合并根框架 - 如果 FrameLayout 是布局的根并且不提供背景或填充等,则可以将其替换为更有效的合并标记。
  • 无用的叶子 - 通常可以删除没有子元素或没有背景的布局(因为它是不可见的)以获得更平坦和更有效的布局层次结构。
  • 无用的父级 - 具有子级的布局,没有兄弟级,不是 ScrollView 或根布局,并且没有背景,可以删除并将其子级直接移动到父级中,以获得更平坦和更有效的布局层次结构。
  • 深度布局 - 嵌套过多的布局不利于性能。考虑使用更扁平的布局,例如 RelativeLayout 或 GridLayout 来提高性能。默认最大深度为 10。

但是我仍然想念一些(经过验证的)答案和提示,如何设计好的视图层次结构或哪些视图元素不应该(大量)与外部元素一起使用/组合。像你这样的东西应该sparley使用layout_weight,因为它会降低性能(修改你的布局)。

在分析的 lint 中有一些有用的措辞,例如

在此元素上设置 android:baselineAligned="false" 以获得更好的性能

所以我现在的问题是:您知道哪些技巧/提示/“代码样式”可以提高您的 UI 性能?应该使用哪些视图元素而不是其他视图元素,因为它们表现更好?您如何提高布局性能?

0 投票
1 回答
370 浏览

android - 必须更新 Google Play 服务才能让我的应用程序在模拟器上运行,只需要在模拟器上运行应用程序,因为我必须找到 id。

我正在尝试使用 Robotium 自动化一个 android 应用程序。我正在尝试在模拟器上使用 Hierarchyviewer 查找元素的 ID。当我在模拟器上启动我的应用程序时,它会显示“更新 Google Play 服务”并且应用程序关闭。我尝试了所有解决方案来更新 Emaultor 上的 Google Play 服务 - 不使用。也尝试使用 AVD - Google API 4.2.2。请让我如何从这里开始。