25

Android SDK 为开发人员提供了在 xml 文件中或直接在 java 代码中编写布局。我读过它,每个人都说 xml 更易于维护和编写更简单,但它们是静态的。否则java布局是动态的,但没有人评论性能问题。我发现关于性能的唯一一件事是嵌套布局对性能有负面影响。与其编写嵌套布局,不如制作自定义布局。到现在为止还挺好 ;)。

布局设计呢?xml还是java代码?xml 文件如何在运行时或编译时解析我的 android?即使它们在编译时被解析,它们也应该在运行时使用。那么在 xml 中声明 RelativeLayout 或者在 onCreate 方法中声明哪个会更快呢?

4

4 回答 4

23

布局定义用户界面的视觉结构,例如活动或应用程序小部件的 UI。您可以通过两种方式声明布局:

  • 在 XML 中声明 UI 元素。Android 提供了一个简单的 XML 词汇表,对应于 View 类和子类,例如用于小部件和布局的那些。

  • 在运行时实例化布局元素。您的应用程序可以通过编程方式创建 View 和 ViewGroup 对象(并操作它们的属性)。

Android 框架使您可以灵活地使用这些方法中的一种或两种来声明和管理应用程序的 UI。例如,您可以在 XML 中声明应用程序的默认布局,包括将出现在其中的屏幕元素及其属性。然后,您可以在应用程序中添加代码,这些代码将在运行时修改屏幕对象的状态,包括那些在 XML 中声明的对象。

ADT Plugin for Eclipse 提供 XML 的布局预览 — 打开 XML 文件后,选择 Layout 选项卡。

您还应该尝试使用 Hierarchy Viewer 工具来调试布局——它显示布局属性值、绘制带有填充/边距指示器的线框,以及在模拟器或设备上调试时完整呈现的视图。

layoutopt 工具可让您快速分析布局和层次结构是否存在效率低下或其他问题。

用 XML 声明 UI 的优势在于,它使您能够更好地将应用程序的表示与控制其行为的代码分开。您的 UI 描述在您的应用程序代码之外,这意味着您可以修改或调整它,而无需修改源代码并重新编译。例如,您可以为不同的屏幕方向、不同的设备屏幕尺寸和不同的语言创建 XML 布局。此外,在 XML 中声明布局可以更轻松地可视化 UI 的结构,从而更容易调试问题。

当你编译你的应用程序时,每个 XML 布局文件都被编译成一个 View 资源。您应该在Activity.onCreate()回调实现中从应用程序代码加载布局资源。通过调用来做到setContentView()这一点,并以以下形式将对您的布局资源的引用传递给它:

我认为它太多了,只需访问此链接http://developer.android.com/guide/topics/ui/declaring-layout.html并获取更多信息..

于 2012-12-14T11:50:47.900 回答
4

决定在何处声明 UI 组件的一个主要因素是它在应用程序生命周期中的行为。如果它是静态的,我会声明 XML 中需要的所有属性,如果它根据用户交互而改变,我必须在活动中实现它。

我会尽可能多地使用 XML,以获得上述好处,例如连贯性、更好地管理各种屏幕尺寸、本地化、资源管理等,

于 2015-01-16T07:33:11.863 回答
1

这在性能方面并没有太大区别,因为您的资源 xml 文件也将使用 aapt 工具进行预编译。因此 XML 转换将发生在源资源文件中,并且与 java 源文件一起,它们将被编译为 Java 类文件。因此,性能应该大致相同也是合乎逻辑的,因为最终两者都将被编译并且两者的内存都将在运行时分配。我还检查了我的示例应用程序,通过 XML 和 Java 创建了类似的视图,并且在分析它们时我发现视图的呈现大约需要相同的时间。:-)

于 2015-09-19T13:46:41.170 回答
-1
`Button b1;`
`b1 = new Button(this);`
`FrameLayout fl =  new FrameLayout(this);`
`fl.addView(b1);`

开发时间比 xml 少,而且加载和卸载时间只有在你实际操作时才能证明。:)

于 2022-02-20T19:10:27.310 回答