在Java中渲染Android XML布局

3

我正在构建一个Java应用程序,是一种Android应用程序(APK文件)分析工具。

该应用程序将提供的主要功能之一是 Android 布局的“预览”,因此我需要一种 API,它可以接收 Android 布局 XML 和一些配置参数,如屏幕分辨率和主题,并返回呈现出与运行该应用程序的设备上相同的布局的渲染结果(与真实的 Android 平台的图形一致性很重要),同时还需要 View 对象的位置数据(以便允许用户通过单击来选择视图)。在第一阶段,我不希望该功能反映以编程方式进行的布局更改,而仅反映在 XML 中定义的 View 对象和资源图形。

我想到的思路是使用布局编辑器的源代码,例如 ADT 的编辑器或 DroidDraw ,并将其集成到我的框架中,但后来我在想 - 或许更好的方法是使用 Android API 自己来为我呈现布局(这主要更好是因为我不需要针对操作系统的后续版本重新编写代码)。

所以我的问题是:API 是否允许这样的操作?还有更好的方法吗?

欢迎任何建议和见解 :)

3个回答

1

API允许这样的操作吗?

如果您所说的“Java应用程序”是在PC上运行的应用程序,那么不行。甚至没有一种简单的方法来调用Android API中的任何东西。我建议您采用第一种方法,集成一些现有的源代码。

话虽如此,这也不是一个简单的任务。另外,如果您正在分析APK,则将使用二进制XML文件而不是易于阅读的纯文本文件(假定这是ADT / DroidDraw使用的文件)。可能会有相关源代码来处理它。

您还可以考虑查看Android本身的源代码,但我想您必须重新实现大量渲染代码,因此这也不是一条容易的出路。

在第一阶段,我不希望该功能反映以编程方式进行的布局更改,而仅反映在XML中定义的View对象和资源图形。

以合理的方式反映以编程方式进行的布局更改几乎是不可能的。


感谢您提供详细的答案。是的,我指的是在PC上运行的应用程序。至于反编译二进制XML - 我已经解决了这个问题,并且我有一个包含所有布局和其他资源的目录,以源格式呈现。 - Elist

1
这项任务肯定是可行的,但并不简单。我建议查看Android Studio的源代码,更具体地说,有一个名为LayoutLib的工具。
这是IDE布局预览/编辑器用于呈现布局的工具。您可以使用它来呈现您拥有源代码的布局和视图。不幸的是,它的文档不是很完善,因此您必须从IDE的源代码中找出用法。

0

开源项目Itsnat有一种直接渲染已加载的XML Android布局文件的方法。它还提供了一个示例应用程序,可以将标准(二进制编译)版本与动态版本进行比较。我的使用经验表明,它能够很好地复制LinearLayout/RelativeLayout等所有特性。https://github.com/jmarranz/itsnat


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接