第七章 探索用户界面构建块外文翻译资料

 2022-01-11 22:09:18

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


Introduction to Android Application Development

Fourth edition

Author:

Joseph Annuzzi, Jr.Lauren Darcey Shane Conder

安卓应用开发介绍 (第四版)

作者:

Joseph Annuzzi, Jr.Lauren Darcey Shane Conder

第七章 探索用户界面构建块

大多数Android应用程序不可避免地需要某种形式的用户界面。在这一章,我们将讨论Android SDK中的用户界面元素。其中的一些元素向用户显示信息,而其他元素可以是输入控件用于从用户那里收集信息。在本章中,你将学习如何使用多样化的通用用户界面控件来构建不同类型的屏幕。

介绍Android视图和布局

在我们进一步讨论之前, 我们需要定义几个术语, 以便更好地理解Android SDK提供的某些功能。首先,让我们讨论视图以及它与Android SDK的关系。

视图简介

Android SDK有一个名为Android .view的Java包。这个包包含许多与在屏幕上绘图相关的接口和类。然而,当我们引用视图对象时,我们实际上只引用这个包中的一个类:android.view.View 类。

视图类是Android中的基本的用户界面构建块。它表示屏幕的矩形部分。View类是Android SDK中几乎所有用户界面控件和布局的基类。

控件简介

Android SDK包含一个名为Android .widget的Java包。当我们引用控件时,我们通常引用这个包中的类。Android SDK包含用于绘制最常见对象的类,包括ImageView、FrameLayout、EditText和Button类。按照我们之前讲过的,所有控件通常都是从view类派生的。

本章主要介绍用来显示和从用户那里收集数据的控件。我们将详细介绍这些基本控件。

布局资源文件由不同的用户界面控件组成。有些是静态的,你不需要以编程的方式使用它们。其它的你希望能够在lava代码中访问和修改它。要以编程方式访问的每个控件必须使用android: id属性指定的惟一标识符。使用此标识符访问活动类中的findViewById()方法中的控件。大多数情况下,你希望将返回的视图强制转换为适当的控件类型。例如,下面的代码演示了如何使用TextView控件的唯一标识符来访问它:

TextView tv = (TextView)findViewById(R.id.TextView01);

注意:

不要混淆androi.widget包中的用户界面控件和应用程序widget。一个widget(android.appwidget)是一个应用程序扩展,经常显示在Android主屏幕上。

布局简介

在androi.widget包中有一种特殊类型的控件,被称为布局。布局控件仍然是一个视图对象,但它实际上并没有在屏幕上绘制任何特定的东西。相反,它是用于组织其他控件(子控件)的父容器。布局控件决定如何以及在屏幕上的何处绘制子控件。每种布局控件类型都使用特定的规则绘制其子控件。例如,LinearLayout控件在单个水平行或垂直列中绘制其子控件。类似地,TableLayout控件以表格格式(以特定行和列的单元格)显示每个子控件。

在第8章“使用布局进行设计”中,我们在布局和其他容器中组织各种控件。这些特殊的视图控件来自android.view.ViewGroup类,只有在你理解这些容器可以容纳的各种显示控件之后才有用。因此有必要在本章中使用一些布局视图对象来说明如何使用前面提到的控件。但是,我们在下一章中才会详细介绍Android SDK中提供的各种布局类型。

注意:

本章中提供的许多代码示例取自ViewSamples应用程序。ViewSamples应用程序的源代码可从本书的网站下载。

使用Textview向用户显示文本

Android SDK中最基本的用户界面元素或控件之一是TextView控件。你可以使用它在屏幕上绘制文本。主要使用它来显示固定的文本字符串或标签,通常来说,Textview控件是其他屏幕元素和控件中的子控件。与大多数用户界面元素一样,它是从View派生的,并且在android.widget包中。因为它是一个视图,所以所有的标准属性,比如宽度、高度、填充和可见性,都可以应用到对象上。但是,因为这是一个文本显示控件,所以你可以应用许多其他TextView属性来控制控件以及在各种情况下如何查看文本。lt;Textviewgt;是用于在屏幕上显示文本的XML布局文件标记。你可以将TextView的android: text属性设置为布局文件中的原始文本字符串或字符串资源的引用,下面是两个方法的示例,你可以使用它们来设置TextView的android: text属性。第一个方法将文本属性设置为原始字符串;第二个方法使用一个名为sample text的字符串资源,它必须在strings.xml资源文件中定义。

lt;TextView

android:id=”@ id/TextView01”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”Some sample text here” /gt;

lt;TextView

android:id=”@ id/TextView02”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”@string/sample_text” /gt;

要在屏幕上显示此TextView,你的活动只需使用布局资源标识符调用setContentview()方法。可以通过调用setText()方法以编程方式更改显示的文本。获取文本是通过getText()方法完成的,现在让我们讨论Textview 的一些更常见的属性。

配置布局和大小调整

TextView控件具有一些特殊的属性,这些属性指示文本是如何绘制和流动的。例如,你可以将Textview设置为一行高和固定宽度。但是,如果文本字符串太长而不适合,文本就会突然截断。幸运的是,有一些属性可以处理这个问题。

提示:

在查看Textview对象可用的属性时,你应该知道Textview类包含可编辑控件所需的所有功能。这意味着许多属性只应用于输入字段,这些字段主要由EditText对象的子类使用。例如,autoText属性(通过纠正拼写错误来帮助用户)最适合设置在可编辑文本字段(EditText)上。当你只是显示文本时,通常不需要使用此属性。

Textview的宽度可以用em度量来控制,而不是用像素来控制。em是排版中使用的术语,它是根据特定字体的点大小定义的。(例如,12点字体的em值是12点。)无论字体大小如何,这种度量都能更好地控制文本的浏览量。通过em属性,可以设置TextView的宽度。此外,你可以使用maxEms和minEms属性来分别根据ems设置Textview的最大宽度和最小宽度。

TextView的高度可以根据文本行而不是pisels来设置。同样地,这对于控制可以查看多少文本非常有用,无论字体大小如何。lines属性设置Textview可以显示的行数。你还可以使用maxLines和minLines分别控制TextView显示的最大高度和最小高度。

下面的示例结合了这两种类型的大小调整属性。这个TextView有两行高的文本和12 ems宽的文本。布局的宽度和高度指定为TextView的大小,是XML模式中必需的属性:

lt;TextView

android:id=”@ id/TextView04”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:lines=”2”

android:ems=”12”

android:text=”@string/autolink_test” /gt;

我们可以使用省略号(hellip;)属性来替换最后的两个字符,这样用户就知道并不是所有的文本都显示出来了,而不是像前面的示例那样在最后只截断文本。

在文本中创建链接

如果你的文本包含对电子邮件地址、Web页面、电话号码甚至街道地址的引用,你可能需要考虑使用autoLink属性(参见图7.1)。

autoLink属性有六个值可供使用。启用时,这些autoLink属性值创建指向可对该数据类型进行操作的应用程序的标准web样式链接。例如,将属性设置为web将自动查找并链接到web页面的任何url。你的文本可以包含autoLink属性的以下值。

none:禁用所有链接

web:允许url链接到web页面

email:允许连接电子邮件地址到邮件客户端与收件人填写的电子邮件地址

phone:允许连接电话号码到拨号应用程序与电话号码填写,准备拨号。

map:支持将街道地址链接到地图应用程序,以显示位置

all:支持所有类型的链接

打开autoLink特性依赖于Android SDK中各种类型的检测。在某些情况下,链接可能不正确或具有误导性。下面是一个链接电子邮件和网页的例子,在我们看来,这是最可靠和可预测的:

lt;TextView

android:id=”@ id/TextView02”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”@string/autolink_test”

android:autoLink=”web|email” /gt;

这个属性还有两个辅助值。你可以将其设置为none,以确保没有链接任何类型的数据。你还可以将其设置为all以拥有所有已知类型联系在一起。图7.2演示了单击这些链接时会发生什么。Textview的默认值是不链接任何类型。如果希望用户看到高亮显示的各种数据类型,但又不希望用户单击它们,可以将linksclicable属性设置为false。

使用文本字段从用户检索数据

Android SDK提供了许多控件来从用户那里检索数据。应用程序经常需要从用户那里收集的最常见的数据类型之一是文本。处理此类作业的一个常用文本字段控件是EditText控件。

使用EditText控件检索文本输入

Android SDK提供了一个名为EditText的方便控件,用于处理来自用户的文本输入。EditText类派生自TextView。实际上,它的大部分功能都包含在TextView中,但在创建为EditText时启用。EditText对象默认启用了许多有用的特性,其中许多特性如图7.3所示。

不过,首先让我们看看如何在XML布局文件中定义EditText控件:

lt;EditText

android:id=”@ id/EditText01”

android:layout_height=”wrap_content”

android:hint=”type here”

android:lines=”4”

android:layout_width=”match_parent” /gt;

这个布局代码显示了一个基本的EditText元素。其中有一些有趣的事情需要注意。首先,hint属性将一些文本放入编辑框中,当用户开始输入文本时,编辑框就会消失(运行示例代码以查看正在运行的提示示例)。本质上,这给了用户一个提示,告诉他们应该去哪里编辑。接下来是lines属性,它定义输入框有多少行高。如果未设置此设置,则输入字段将随着用户输入文本而增长。但是,设置大小允许用户在固定大小内滚动以编辑文本。

默认情况下,这也适用于条目的宽度,用户可以执行长按以弹出上下文菜单。这为用户提供了一些基本的复制、剪切和粘贴操作,以及更改输入法和向用户的常用单词字典中添加单词的能力(如图7.4所示)。你不需要为这个有用的操作提供任何额外的代码来帮助你的用户。你还可以突出显示代码中的文本部分,调用setselection()可以做到这一点,调用selectAl1()可以突出显示整个文本输入字段。

EditText对象本质上是一个可编辑的TextView。这意味着你可以使用与TextView相同的方式从它读取文本:使用getText()方法。还可以使用setText()方法设置要在文本输入区域中绘制的初始文本。

用输入过滤器约束用户输入

有时候你不想让用户

全文共15707字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[1633]

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

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