我来自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桌面应用程序开发人员的常见做法?
答案 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)
以下是我的想法: