为什么在Android中使用XML来创建UI布局?

26

我想知道为什么在Android中使用XML创建用户界面布局。我知道它将业务逻辑与设计分离,但XML的重要性是什么?

另外,我想了解这个过程中自动生成的R.java文件的意义。我只知道它根据资源的更改而生成,并且可以通过ID访问小部件和资源。

如果有人能够清楚地说明这两个方面就太好了。


4
没错,但请记住,在编译之前,任何格式都可以用作源格式。选择XML的主要原因是因为人们熟悉它,并且有许多原生支持它的IDE工具。例如,开发人员也可以选择JSON,然后将其编译成二进制格式。 - Abdullah Jibaly
6个回答

37
与大家所说的XML易于使用和高效相反,我在Ed Brunnette的《Hello Android》(第49页)中读到了有意义的内容。
Android针对内存和处理能力有限的移动设备进行了优化,因此您可能会发现它普遍使用XML很奇怪。毕竟,XML是一种冗长的、可读性强的格式,不以简洁和高效著称,对吧?
尽管您在编写程序时看到的是XML,但Eclipse插件调用了Android资源编译器aapt,将XML预处理为压缩的二进制格式。**存储在设备上的是这种格式,而不是原始的XML文本。
这就是我寻找的答案。(如果我的问题意味着其他方面,我很抱歉)
选择XML的主要原因是它的熟悉程度和本地支持它的IDE工具数量。开发人员也可以选择JSON等其他格式,并将其编译为二进制格式。自动生成的R.java文件是IDE的帮助程序,使您可以在想要访问资源时获得自动完成的好处。

14

XML易于通过编程来解析和操作,它基本上是一种树形结构,并且大多数UI创建工具已经在使用它了。它与解耦业务逻辑实际上没有任何关系,因为你可以像Java代码一样使用Model-View-Controller模式定义Android中的代码。

自动生成的R.java文件是IDE的助手,这样当您想要访问资源时就能获得自动完成的好处。它还会防止您犯愚蠢的错误,因为如果您尝试访问未定义的资源,编译器将抱怨。如果您使用简单的属性文件,直到运行时您才会知道您正在使用的“键”是否缺失。


@Vladmir,@IanNorton,@sub:我在评论中更新了一个新的方面,请查看并告诉我您的看法。 - rogerstone

3

为什么Silverlight与XML一起使用?答案很简单,XML的集成和可扩展性赋予了它强大的能力。R.java用于索引,有组织地管理事物从来不是坏事。

抱歉我的英语。

1
一个可能的原因是你不需要在底层拥有任何工作中的Java,就能够看到你正在工作的界面的可视化布局。XML UI元素/页面本质上是一个文档,你可以解析和显示它。如果这是一个源文件,你要么必须仔细解析它或编译和运行它(这些都比解析XML更复杂)。

1

XML本身对人和机器都易读。此外,它是可扩展和易于开发的。您已经提到了解耦。

至于R.java - 它只是访问小部件的方式。这个解决方案相当不错,因为它使用整数而不是字符串来使用更少的内存,并且同时为开发的简单性提供易读的名称。


0

Android布局是树形结构,有一些强制规则。XML非常适合这个目的。

JSON也具有树形结构,但它们是面向数据的,而XML是面向文档的。

这意味着XML基于文档具有结构和其他语义元素的想法,而不必参考如何显示这些元素。

这样的文档的实际显示可能会因输出媒介和风格喜好而异。

而JSON旨在表示JavaScript,其主要目的是数据交换。由于轻量级和简单性以及更接近编程数据结构的语法形式,它们非常适用于面向数据的领域。


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