在Android中,为什么使用XML创建GUI是一种很好的做法

时间:2011-02-23 06:14:46

标签: java android xml android-layout

我来自Java Swing背景。我是否知道为什么使用XML创建GUI在Android中是一个很好的做法?例如,而不是编写代码(这使我感觉更舒服,因为我使用Swing桌面应用程序)

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("Hello, Android");
       setContentView(tv);
   }
}

我们以XML方式编写代码。

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

在教程中,它说明了,

  

这种结构非常容易   使用更多功能快速构建UI   比你简单的结构和语法   将用于程序化布局。

但是,我并没有真正购买这个想法,因为我觉得创建一个单独的XML文件更麻烦。

任何人都可以给出一个真实世界的例子(在Android意义上),为什么使用XML构建GUI比裸Java代码更优越?

如果通过XML进行GUI编程确实很好,为什么它仍然没有成为GUI桌面应用程序开发人员的常见做法?

7 个答案:

答案 0 :(得分:24)

使用XML布局比Java代码有许多优点。您可以轻松参考字符串,绘图,尺寸,主题等。但最大的优势是自动支持多种配置。在不更改代码的情况下,只需在layout-land /和layout-port /中使用XML布局,就可以为横向和纵向设置不同的布局。你也可以这样做,使布局适应不同的分辨率,语言等。

答案 1 :(得分:8)

  

如果通过XML进行GUI编程确实很好,为什么它仍然没有成为GUI桌面应用程序开发人员的常见做法?

考虑到单独的.NET开发可能超过了所有其他桌面GUI开发的组合,我认为它已经“成为GUI桌面应用程序开发人员的常见做法”。

此外,使用XML进行GUI是较大的“声明性UI”趋势的一个方面,它具有许多非XML形式,例如用于Qt的JSON-ish QML。 AFAICT,所有主要的GUI开发都在逐步将这种声明性标记合并为一种形式或方式。

答案 2 :(得分:1)

因为我认为你来自Java Swing背景所以你可能会考虑以编程方式创建布局简单任务。但是有很多原因可以让你想到XML策略:

1)XML布局设计易于理解,同时保持应用程序用户界面与应用程序代码分离。

2)市场上有许多设备具有不同的显示尺寸,Android提供了一个更容易的任务,即为所有人使用XML创建UI并保持它们分离。

3)另外,如果你想开发一个多语言应用程序,那么XML是最好的。

底线:

如果您确实需要,只使用Java代码进行布局,否则您仍然拥有最佳选项XML。

答案 3 :(得分:1)

考虑使用HTML / CSS创建UI。与Swing相比,我总觉得它很方便。我相信,它不仅仅是我,而且其他人也以同样的方式思考,Jelly Swing

答案 4 :(得分:0)

嗯,首先,它允许您使用GUI构建器(例如Google提供的eclipse驱动的构建器)。

它还可以帮助您将业务逻辑与显示逻辑分开。

但是,你可能真的擅长Swing代码,而且你已经忘记了建立这些技能需要多长时间。 :)

答案 5 :(得分:0)

我不得不说,如果开发人员熟练,这两种方法都可以很好地运作。 但是,我认为我们必须考虑这项工作在团队中的运作方式。我同意tangentstorm。通过这种方式,我们可以轻松地将UI开发人员和应用程序开发人员分离。在团队中,人们只能关注他们正在做的事情。

答案 6 :(得分:0)

以下是我的想法:

  • 一种很好的方式来处理我的GUI管道。
  • 每当我需要试验GUI维度值时,代码都不需要重新编译
  • XML布局通常很容易理解 - 初始GUI开发变得过于简单