《Android UI基础教程》——2.2节开始使用Android视图

2.2 开始使用Android视图
Android UI基础教程
一个Android应用的UI是由有层级的视图对象组成的。每一个视图代表着屏幕的一块区域。例如,一个按钮代表一块可以被用户按下的矩形区域。Android应用在layout container中排布视图,这也被称作ViewGroup。视图有指定它们外观和在容器中排布方式的属性。Android框架提供许多视图和容器。图2.2展示了一些常见的视图元素。不过,还有许多,需要你花时间去使用图形化布局编辑器来发现所有可用的视图。通过继承一个View类也可以创建定制的类。在本书随后的章节中你将会了解更多。

普通视图属性
为了控制UI的视图如何摆放以及在屏幕上展示,Android提供了许多View属性——你已经在第一章里见过了一些。View属性以View类中的字段存在并且可以通过getter和setter方法访问。他们还可以在XML布局文件中用XML属性指定。属性遵循以下形式:android:属性名,属性名在哪。所有的系统属性都使用android:前缀。这里我们将会介绍最重要的属性和行为,涵盖了容易混淆的各个方面。

注意: Android采用特殊尺寸的单位,这个单位被称作密度无关像素(density-independent),或者dp。这是Android处理不同屏幕尺寸和分辨率的一种方式。在第三章中关于这个你会学到更多。现在,只需明白在指定你的UI元素大小的时候你应该使用dp单位。

高和宽

Android中的每一个视图都需要有高和宽。这可以通过使用layout_ height和layout_width两个属性指定。高度和宽度的值使用精确尺寸指定,或者也可以使用特殊的象征值wrap_content或match_parent。Android API版本8把fill_parent改名为match_parent,但是fill_parent仍允许向下兼容。在布局文件中需要使用match_parent,因为fill_parent已被弃用。

如果使用wrap_content,视图将会占用尽可能多的空间来包括它里面的内容。使用match_parent将会使得视图扩展以填满它的父视图的整个内部。另外,指定一个确切的尺寸将会使得该视图占用相应大小的屏幕空间。因此,例如,你能够创建一个宽度为48像素的视图,那么它展示在屏幕上就会正好是48像素。一般说来,你会发现match_parent和wrap_content在创建布局时最有用。

在创建布局时使用精确的尺寸可能会很诱人。但你需要避免这种冲动,使用更加有弹性的wrap_content和match_parent。例如,你可能有两个视图:一个占据四分之一大小的屏幕,另一个占据剩余的空间。这将会使得你的视图足够灵活,可以适配任何屏幕尺寸。

MARGINS和PADDING

创建布局时,你会想要在视图周围添加空间。通过增加可点击区域的目标尺寸,将会增加应用的可用性。这同样也可以增加应用的视觉吸引力。Android使用两个属性创建视图周围的空间:layout_margin和padding。Margin创建视图外围的空间,这将会把视图和周围的其他视图隔离开来。Padding在视图的内部创建控件。图2.3展示了两者的区别。你可以使用属性来为视图的周围或者只是单侧确定padding和margin的尺寸。

GRAVITY

默认情况下,Android将会把视图摆放在屏幕左侧。要改变这种情况,你可以使用gravity属性。gravity属性控制了一个子视图在视图里面的默认位置。例如,你可以在一个线性布局中使用gravity属性去把它的子视图放在屏幕的右侧。默认情况下,布局容器的gravity值设为left。大多数其他视图的gravity值设为center。

注意: 设置gravity时,你必须考虑到视图的尺寸。gravity属性只用于子视图放置于父视图的情况。如果父视图占据了半个屏幕,那么gravity将会把子视图只放在那半边屏幕上。如果你尝试使用gravity并且没有得到想要的结果,检查视图的尺寸。

类似于gravity属性的是layout_gravity属性。gravity属性影响视图中的子视图的位置,而layout_gravity则用于指定单个视图的位置,使其与父视图区分开来。再次用线性布局举例,如果你把gravity值设置为它的默认值,所有的视图都会被放在屏幕的左侧。然后你可以设置其中一个子视图的layout_gravity属性值,使其变成right,那么那个单个的视图将会被放置到屏幕的右侧。图2.4、图2.5、图2.6展示了3个屏幕:默认gravity值、gravity值设为right,以及一个按钮的layout_gravity设为right。

更多选项

有很多可选的视图属性。有些是针对特定的视图,比如设置一个ImageView源或者一个TextView的文本。有些对于所有的视图都有用但是却有默认值,例如图像使用的背景。有些甚至可以用来给你的视图制作动画。你应该探讨这些属性并熟悉这些基础。在整本书中你将会学到更多的属性,但是不可能覆盖到所有。

时间: 2024-08-22 15:21:16

《Android UI基础教程》——2.2节开始使用Android视图的相关文章

《Android UI基础教程》——2.4节显示列表

2.4 显示列表 Android UI基础教程 用来开发应用最常见的视图类型之一就是ListView.这个视图呈现了一个垂直滚动的项目列表.每一行都会有一些文本但是通常也会包含其他视图,例如ImageView和按钮等(联系人应用就是很好的例子).当你需要把数据列表呈现给用户的时候,使用ListView最合适.它是如此常见,以至于Android实际上提供了展示一个列表的内置活动. 2.4.1 ListActivity 一个ListActivity将绑定到一个包含有ListView的默认视图.不必要

《Android UI基础教程》——1.3节 Android UI基础

1.3 Android UI基础 Android UI基础教程 用户界面(UI)是应用程序和用户之间联系的桥梁.事实上,对于用户来说,UI就是应用程序.Android 的UI框架足够强大,能够创建复杂的带有图形和动画的 UI,同时它也足够灵活,能够从小屏幕的手持设备扩展到平板电脑以及电视.本节介绍Android UI开发的基础知识,通过本节的学习,你就可以开始为自己的应用程序创建出色的UI了. 1.3.1 主屏幕和通知栏 要创建Android应用程序,首先你应该了解基本的Android OS 本

《Android UI基础教程》——2.3节排布视图

2.3 排布视图 Android UI基础教程 Android视图层次起始于一个布局容器.这些容器包含子视图并安排它们的相对位置.有几个具有不同特征的容器类型,以在不同情况下获得最优解. 2.3.1 FrameLayout 最简单的布局容器是FrameLayout.这个容器完全不安排子视图.它只是简单地呈现每一个视图,从上到下摆下来.视图的顺序是基于它们在XML文件中的声明:视图在文件的后部声明的会被画在顶部.任何时候当你想创建重叠视图时都可以使用这个布局. 当创建自定义的可点击的元素时Fram

《Android UI基础教程》——2.6节 防止应用程序无响应(ANR)

2.6 防止应用程序无响应(ANR) Android UI基础教程 一个Android应用程序运行在它自身的进程之上,是与其他应用无关的沙盒应用.应用被单个线程操控:主线程,或者叫做UI线程.要让应用能够快速响应,Android限制了函数调用的时间.如果函数超过了它的时间限制,则会出现一个应用程序没有响应(ANR)的对话框,提示用户选择继续等待或者强制关闭应用.你应该不惜任何代价避免ANR的出现.当你在主线程上执行长时间的操作时ANR会出现,例子包括网络I/O.磁盘I/O.数据库查询以及密集的C

《Android UI基础教程》——1.1节Hello World

1.1 Hello World Android UI基础教程 在创建一个基础的Hello World应用之前,需要先从developer. android.com下载并且安装Android开发者工具.你需要安装Android 软件开发工具包(SDK).Eclipse以及ADT插件.遵循开发者网站提供的指导配置Eclipse开发环境.本书的所有例子都是用Android SDK Release 13和Eclipse Helios release. 准备就绪之后,依照以下步骤创建Hello World

《Android UI基础教程》——2.5节理解活动

2.5 理解活动 Android UI基础教程 2.5.1 声明活动 所有的活动都必须在应用程序的清单文件中声明.如果没有声明,在应用第一次运行时会导致抛出异常.下面是时间跟踪应用的一个示例活动的清单条目: `<activity android:name=".TimeTrackerActivity"` ` `` `` `` android:label="@string/app`_`name">` ` `` `` `` <intent-filter&

《Android UI基础教程》——1.5节结束语

1.5 结束语Android UI基础教程本章简单介绍了如何创建一个标准的 Hello World 应用程序,并介绍了构建Android用户界面所需的工具,通过这样的方法介绍了Android的框架.具体包括以下内容. AndroidManifest.xml文件中声明了应用程序所使用的所有特性.使用manifest来防止应用程序运行在不支持的硬件设备上.图像和布局文件分别被放进不同的文件夹中,从而让Android系统在设备运行时可以根据当前配置为其选择最适合的资源.Activity类是Androi

《Android UI基础教程》——2.8节结束语

2.8 结束语Android UI基础教程本章主要介绍了常见的Android视图和布局容器,以及其显示属性.你也可以开始构建一个基础的时间跟踪应用了.本章包括以下内容. Android提供了许多构建UI的基础形式部件.有多种布局容器类型,它们每一个都有特定的应用场景,你应该熟练使用它们.任何应用中UI的更新都必须发生在UI线程上.你可以使用ListView来向用户展示数据列表,你也可以使用ListAdapter来把数据绑定到ListView上.了解活动的生命周期对于构建及时响应的应用至关重要.你

《Android UI基础教程》——1.4节工具

1.4 工具Android UI基础教程Android SDK中包含可协助你开发应用的一整套工具.其中包括SDK工具和平台工具.SDK工具,包括ADT,是独立于平台并且不管你是为哪个Android版本开发应用都能够使用的.平台工具是针对特定的Android版本的并且在更新SDK版本时需要重新安装.让我们把注意力集中在SDK工具上来,尤其是那些被用来开发Android应用UI的工具. 1.4.1 Android开发者工具开发Android应用的主要工具是使用ADT插件的Eclipse IDE.Ec