Android中的动态与XML布局?
我是Android新手,已经开始创建自己的用户界面。我看到,你可以创建动态像这样(Dynamic Layouts):Android中的动态与XML布局?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ScrollView sv = new ScrollView(this);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
sv.addView(ll);
TextView tv = new TextView(this);
tv.setText("Name");
ll.addView(tv);
EditText et = new EditText(this);
ll.addView(et);
Button b = new Button(this);
b.setText("Ok");
ll.addView(b);
}
,但我也看到,NetBeans已经有文件资源 - >布局 - > main.xml中。所以,你可以创建用户界面(Declaring XML layout)的XML布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, AndroidTest"
/>
</LinearLayout>
所以我的问题是,我应该使用哪一个?什么是推荐,以及Android开发中动态vs XML布局的优点/缺点?
使用布局XML资源文件。首先,资源集(例如,除res/layout/
之外的res/layout-land/
)允许您定义在不同情况下使用的多个UI,并且系统根据需要自动选择正确的UI。 Java中的等价物将是一组令人讨厌的if
或switch
陈述。
其次,有一些工具可以帮助您成功创建这些布局资源。即使Eclipse的拖放式GUI构建不是您的一杯茶(例如,您使用的是NetBeans),Lint也会帮助指出您的布局中的缺陷,为此只会指出其中的一个子集等效的Java代码。第三,它往往更简洁,所以如果你手工输入这些东西,那么XML的输入就会少一些。第四,大约98%的示例代码将使用布局XML文件,并且您在StackOverflow(以及其他支持资源)上找到的所有UI答案中的大约98%将假定您使用布局XML文件。尽管你可以自由地避免使用XML - 也许你在年龄较小的时候受到了尖括号的攻击 - 但是与大多数Android开发人员相比,你将会向上游游泳,与目前的战斗相比。
我会推荐你的项目的大部分使用xml布局。 可以放在不同的文件夹中的布局,如:
布局土地 - >景观
布局端口 - >人像
布局-V15 - > Android版版本> = 15
布局sw600dp - >对于具有一定宽度
屏幕使用这些资源的分类,你可以快速地在你的布局,各种支持广泛的Android设备,而不需要编写一个LO额外的。
在我看来,这是使用xml资源vs动态创建所有布局的最大优势。欲了解更多信息,请参阅this link about resources
+1现在我看到与XML至少一些关于UI不一致的担心将被取消我的回复 – 2012-08-14 21:06:32
那么,我声明μUI在XML(99%的时间),因为我更容易以这种方式工作。
这是很好的做法,单独的用户界面和代码逻辑,XML是用于描述UI更容易(可以考虑使用this old designer或切换到Eclipse IDE和它的设计师)
而且,一个Android应用程序可以有多个设计(适用于手机和片),这将是不好受手工代码,在Java中
简单地说,使用XML
+1谢谢..所以Eclipse有一个可视化的设计器为Android? – 2012-08-14 21:05:14
是的,它是Eclipse的ADT Plugin的一部分..... [help](http://developer.android.com/sdk/installing/installing-adt.html) – 2012-08-14 21:08:18
XML的使用不会分离UI和代码逻辑。 – 2013-09-14 14:43:16
我喜欢XML的大部分事情,因为它可以让你分开的代码内容,它往往是吸尘器特别编辑当项目变大,而你忘记了你刚才写的内容时。使用XML和样式可以让您在整个应用程序中获得一致的外观和感觉。它还允许布局系统负责繁重的工作,而且不会以视图引用活动的上下文为结束。 (这是不好的,当你旋转和你的活动重新创建)。总的来说,它往往是一个更快的选择,如果你可以用XML来完成比我喜欢的。大多数的android archtiecture /教科书似乎也都遵循这个设置。 (请参阅Android开发文档,CommonsWare的Mark Murphy)
Dynamic有一个好处,它能够以更高级的方式定制一些东西,并且可以很容易地修复一些布局问题。除此之外还有一些好处,但我更喜欢先用XML做所有事情,如果不能完成或难以实现,那就用代码完成。 XML中的某些操作可能比代码中的操作更容易。
这完全是你自己的选择。您可能会发现大多数Android开发人员都使用XML来编写其应用程序的布局,因为这是专门为此设计的。但我个人来自游戏开发背景,并不真正需要Android提供的UI小部件,所以当我使用UI小部件时,我只需用java编写代码。
我希望这会有所帮助。基于XML
+1感谢您的意见 – 2012-08-14 21:10:03
布局取决于铸造的,因为你必须使用:
Button myButton = (Button) findViewById(R.id.my_button);
让你有一个铸造,耗时XML搜索。 当您使用UI的动态创建更难以管理它。你必须组织一切,但你不需要投入太多。
我更喜欢第三种解决方案 - RoboGuice 它使用依赖注入模式,您不需要关心转换,创建应用程序会更快。也更灵活。考虑你有一个正常的文本字段。然后你想把它改为文本区域。在RoboGuice中,只有2次更改(用法更改除外)。使用Context时,速度也会更快(上下文非常耗费内存对象,并且存储对它的引用是错误编码的标志)。
所以我的建议是:使用XML,因为它简单的管理UI。使用RoboGuice可以快速编码。
+1谢谢。 XML就是这样。我有一种感觉,尽管它在Android网站上使用XML的大部分代码。 – 2012-08-14 21:04:30
另外,在Java代码中,您必须编译并运行代码,以查看布局如何,而在XML中(如果您使用的是Eclipse),您可以使用eclipse提供的工具直接查看它。 – 2012-08-14 21:06:46