构建用户界面和使用控件外文翻译资料

 2022-10-26 10:21:36

英语原文共 1008 页,剩余内容已隐藏,支付完成后下载完整资料


构建用户界面和使用控件

到目前为止,我们已经介绍了Android的基础,但是还没涉及到用户界面(UI)。在这一章节,我们将探讨用户界面和控件,首先讨论Android中UI开发的一般方法,然后介绍Android SDK的许多UI控件。这些是要创建界面的构造块,我们还将讨论视图适配器和布局管理器。视图适配器被用于给显示数据集的控件提供数据,不管这些集合来自数组,数据库还是其他数据源。我们还会介绍风格和主题,有助于封装控件的外观特性,使创建和维护更容易。

学完本章内容,你将深刻理解如何设置UI控件在屏幕上的布局方式以及如何为它们填充数据。

Android中的UI开发

Android中的UI开发很有趣。原因在于它相对比较简单。运用Android,我们有一个容易理解的包含有限数量现成控件的框架。可用屏幕控件通常是有限的。Android也会负责执行与设计和构建高质量UI相关的大量重要工作。再考虑到用户通常希望执行一项特定操作的事实,我们就能够轻松构建良好的UI来提供出色的用户体验。

Android SDK包含许多控件,可以使用它们来为应用程序构建用户界面。与其他SDK相似,Android提供了文本字段、按钮、列表以及网格等控件。另外,Android提供了一组适合移动设备的控件。常见控件的核心是两类:android.view.View和android.view.ViewGroup。由第一个类的名字可以判断出,View类表示一个通用的View对象。Android中的常见控件最终都会扩展View类。ViewGroup也是一个视图,但它还包含其他视图。ViewGroup是一些布局类列表的基类。Android中像Swing,使用布局的概念去管理如何在容器视图中摆放控件。就像我们将会看到的那样,那使我们在用户界面中控制控件的位置和方向变得简单。

你可以选择多种方法在Android中构建用户界面。可以完全用代码构造用户界面。也可以在XML中定义用户界面。甚至可以结合两种方法使用:在XML中定义用户界面,然后在代码中引用和修改它。为了演示,在这一章中我们将使用三种方法构建一个简单的用户界面。

完全使用代码来构建UI

第一个示例演示了如何完全通过代码来建构用户界面。要查看这段代码的效果,可以创建一个新Android项目,其中包括一个名为MainActivity的活动,然后将代码清单6-1中的代码复制到MainActivity类中。

nameContainer对象包含两个TextView控件:一个用于标签Name:另一个用于保存实际的人名。addressContainer是水平放置的,而addressContainer是垂直放置的。这两个容器都包含在parentContainer中,后者是活动的根视图。构建了这些容器之后,MainActivity活动通过调用setContentView将视图的内容设置为根视图。在呈现活动的用户界面时,根视图被调用来呈现它本身。根视图然后调用子视图来呈现它们自己,子控件调用子控件,以此,直到呈现整个用户界面。如果查看XML布局,可以看到定义这些控件非常简单。与Android工具包中的任何其他控件一样,可以编程方式访问控件来初始化它们或从中获取数据。

完全使用XML构建UI

现在我们在XML中构建同一个用户界面。回想第三章中XML布局文件存储在源目录下的layout文件夹中。查看此例的效果,在Eclipse中新建一个Android项目。默认情况下,你将得到一个名为main.xml的XML布局文件,该文件位于res/layout文件夹下。双击main.xml查看内容。Eclipse为你的布局文件显示一个直观的编译器。你可能在视图的顶部看见一个字符串,显示“Hello World,MainActivity!”或者像这样的其他信息。单击视图底部的main.xml选项卡查看main.xml文件的XML,可看见一个LinearLayout和一个TextView控件。使用Layout或main.xml选项卡,或者两者兼用。

在新项目的src目录下,有一个默认的包含一个Activity类的定义的.java文件。双击可看内容。注意声明setContentView(R.layout.main)。XML文件简单直观,但是注意我们定义了3个容器视图。第一个LinearLayout等效于父容器。此容器通过设置相应特性将其方向设置为垂直。父容器包含两个LinearLayout容器,它们代表nameContainer和addressContainer。

使用XML和代码构建UI

将TextView控件的值硬编入到XML布局中没有任何意义。理想情况下,我们应该在XML中设计UI,然后从代码中引用这些控件。这种方法使我们能够将动态数据绑定到在设计时定义的控件上。事实上,这个方法被推荐。在XML中构建布局然后使用代码填充数据非常简单。

除了将ID添加到我们希望通过代码填充的TextView控件,我们还拥有标签TextView控件,可以向它填充来自字符串资源文件的文本。它们是没有ID有android:text特性的TextView。你可能还记得第三章中,这些TextView的实际字符串将来自/res/values文件夹的strings.xml文件。

Android的开发人员完成了一项出色的工作,让控件的每个方面都可以通过XML或代码设置。在XML布局文件中而不是使用代码来设置控件的特性,这通常是个很好的主意。但是,很多时候需要使用代码,比如设置要向用户显示的值。

FILL_PARENT VS MATCH_PARENT

常量FILL_PARENT在Android2.2中已被舍弃并且被MATCH_PARENT取代。但这严格来讲只是更改了名称。此常量的值仍然为-1.类似的,对于XML布局,fill_parent被match_parent取代。那么使用什么值呢?无需使用FILL_PARENT或MATCH_PARENT,只需要使用-1即可。但是,这个值不是很容易读取,而且没有等效的未命名值用于XML布局。不过有一种更好的办法。

理解安卓的常用控件

我们现在开始讨论Android SDK中的常见控件。首先将介绍文本控件,然后讨论按钮、复选框、单选按钮、列表、网络、日期和时间控件,以及地图视图控件。我们还将讨论布局控件。

文本控件

文本控件可能是你在Android中使用的第一种类型的控件。Androi拥有全面但不是太多的文本控件。本节将讨论TextView、EditText、AutoCompleteTextView和MultiCompleteTextView控件。

TextView

注意我们在XML中指定ID、宽度、高度及文本值的方式,以及使用SetText()方法设置值的方式。TextView控件知道如何显示文本,但不允许进行编辑。你可能因此而认为该控件实际是一个冒牌的标签。事实并非如此。TextView控件拥有一些有趣的属性,这些属性使它变得非常实用。例如,如果知道TextView的内容包含一个URL或一个E-mail地址,则可以将autoLink属性设置为“email|web”,该控件将找到并突出显示这些电子邮件地址和URL。而且,当用户单击这些突出显示的项时,系统将启动电子邮件应用程序向该地址发送邮件或启动浏览器来访问该URL,在XML中,此特性位于TextView标记内。

我们在其中制定了一个以竖线分割的值集,包括web、email、phone或map,或者使用none或all。如果希望在代码中而不是使用XML设置autoLink行为,相应的方法调用为serAutoLinkMask()。可以像之前一样,传递一个int值来表示各种值的组合,比如Linkify.EMAIL_ADDRESSES|Linkify.WEB_ADDRESSES。为了实现此功能,TextView利用了android.text.util.Linkify类。

EditText

EditText控件是TextView的子类。从其名称可以看出,EditText控件支持文本编辑。EditText并没有因为Internet的文本编辑控件那么强大,但是基于Android设备的用户可能不编写文档,它们最多输入几段文字。因此,该类具有有限的恰当的功能,可能会令你震惊。例如,EditText最重要的特性之一是inputType。可以将inputType属性设置为TextAutoCorrect来让该控件更正常见的拼写错误。可以将它设置为textCapWords,让控件将单词转换为大写。还有其他一些选项仅需要电话号码或密码。

有一些较老的,目前已经被弃用的指定大写、多行文本和其他属性的方式。如果在指定这些属性时没有使用inputType属性,则可以读取它们,但是如果指定了inputType,将忽略所有这些较老的属性。

EditText控件的老式默认行为是在一行上显示文本并根据需要增加行。换句话说,如果用户输入的文本超过了第一行,将会出现第二行,以此类推。但是,通过将singleLine属性设置为true,可以强制用户输入一行内容。对于这种情况,用于必须在同一行上输入。使用inputType,如果不指定textMultiLine,EditText将默认为单行。因此,若想要老式的多行输入默认行为,需要为inputType指定textMultiLine。

EditText一项很棒的功能是可以指定提示文本。此文本将以稍暗一些的颜色显示,并在用户开始输入文本时立即消失。提示的作用是让用户知道应在此字段中输入任何内容,不需用户选择和擦除默认文本,。

AutoCompleteTextView

AutoCompleteTextView控件是一个具有自动完成功能的TextView。换句话说,当用户在TextView中输入内容时,该控件可以显示建议供用户选择。

如果你已经使用过建议控件或者一个类似的自动完成控件,你就会知道这类控件包含两部分:文本视图控件和显示建议的控件。这是一般概念。要使用这样的控件,必须创建该控件,创建建议列表并告知控件,还可能告知控件如何显示建议。也可为建议创建第二个控件,然后将两个控件相关联。

MultiAutoCompleteTextView

如果你使用过AutoCompleteTextView控件,就会知道该控件仅仅为文本视图的完整文本提供建议。换句话说,如果输入一个句子,不会获得每个单词的建议。MultiAutoCompleteTextView解决了这一问题。MultiAutoCompleteTextView控件需要为其提供一个令牌化程序,该令牌化程序可解析句子并告诉它是否再次开始建议。

按钮控件

按钮在所有部件工具包中都很常见。Android不但提供了典型的按钮集合,还新添了一些附加按钮。本小节将讨论三种按钮控件:基本按钮、图像按钮和切换按钮。Android中基本的按钮类是android.widget.Button。

ImageButton控件

Android通过android.widget.ImageButton提供图像按钮。图像按钮的用法类似于基本按钮。

图像按钮的一个很棒的功能是可以为按钮指定透明的背景。结果将是一个可单击的图像,它的行为类似于按钮,但具有你想要的任何外观。只要为图像按钮设置android:background=”@null”。

因为图像可能与标准按钮差别巨大,所以可以自定义在UI中使用按钮在另外两种状态下的外观。除了正常显示,按钮还可以拥有焦点,可以按下。拥有焦点表示按钮当前是事件的目标。

ToggleButton控件

与复选框或单选按钮一样,ToggleButton是一种具有两种状态的按钮。如果On/Off不适合你的应用程序,可修改ToggleButton的文本。例如,若希望通过ToggleButton启动和停止一个后台进程,可使用android:textOn和android:textOff属性将按钮的文本设置为Stop和Run。

CheckBox控件

它是另一种2状态按钮,允许用户切换它的状态。不同之处在于,对于许多情形,用户不希望将它视为调用直接操作的按钮。但从Android的角度讲,它就睡一个按钮,对按钮执行的任何操作都可用于复选框。在Android中,可以通过创建android.widget.CheckBox实例来创建复选框。可调动setChecked()或toggle()来管理复选框的

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[153908],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。