Android移动开发基础教程第2章-Android界面开发课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Android移动开发基础教程第2章-Android界面开发课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 移动 开发 基础教程 界面 课件
- 资源描述:
-
1、刘 刚 主 编高伟南 副主编2.1 视图组件与视图容器 在学习一些具体的控件之前,我们首先来了解几个基本的概念:控件、在学习一些具体的控件之前,我们首先来了解几个基本的概念:控件、View(视图)和(视图)和 ViewGroup(视图容器),然后再来了解开发用户界面(视图容器),然后再来了解开发用户界面的方式。控件是组成的方式。控件是组成 Android 界面最基本的元素,每一个按钮或文本框都界面最基本的元素,每一个按钮或文本框都是控件。是控件。View 是所有控件的基类。是所有控件的基类。ViewGroup 可以控制子控件的布局和可以控制子控件的布局和显示。下面我们以图显示。下面我们以图 2
2、.1 为例,分别介绍这几个概念。为例,分别介绍这几个概念。1 1控件控件 图图 2.1 2.1 所示的是手机所示的是手机 QQ QQ 的一个登录界面,界面中包含账号输入框、的一个登录界面,界面中包含账号输入框、密码输入框、登录按钮等,这些基本元素称为控件或者组件,它们组合在一密码输入框、登录按钮等,这些基本元素称为控件或者组件,它们组合在一起形成了起形成了 Android Android 的用户界面。的用户界面。2 2View View View View 是所有控件的基类,是所有控件的基类,Android Android 界面中显示的所有控件都继承自界面中显示的所有控件都继承自 ViewVi
3、ew,所以它是,所以它是 Android Android 界面开发的基础。界面开发的基础。View View 不仅包括控件的绘制,不仅包括控件的绘制,还包括一系列的事件处理,使得用户可以与界面进行交互。还包括一系列的事件处理,使得用户可以与界面进行交互。例如可以给图例如可以给图 2.1 2.1 所示的所示的“登录登录”按钮设置监听事件,当用户单击按按钮设置监听事件,当用户单击按钮时,后台去执行登录操作。钮时,后台去执行登录操作。在创建一个在创建一个 View View 的时候,开发者通常需要执行以下一些常见的操作。的时候,开发者通常需要执行以下一些常见的操作。(1 1)设置属性:)设置属性:V
4、iew View 的大小、位置、颜色等信息。的大小、位置、颜色等信息。(2 2)设置焦点:)设置焦点:View View 是否需要获得焦点,在不同的操作下焦点如何移动。是否需要获得焦点,在不同的操作下焦点如何移动。(3 3)事件监听:有些时候,开发者需要对)事件监听:有些时候,开发者需要对 View View 设置一些监听事件,例如设置一些监听事件,例如当当 View View 获得焦点或者被单击时可以做一些自定义的操作。获得焦点或者被单击时可以做一些自定义的操作。(4 4)可见性:开发者可以动态地控制)可见性:开发者可以动态地控制 View View 的显示或者隐藏。的显示或者隐藏。3 3V
5、iewGroup ViewGroup 在在 Android Android 中,管理控件的大小和控件之间的排列顺序称为布局管理,中,管理控件的大小和控件之间的排列顺序称为布局管理,ViewGroup ViewGroup 可以实现布局管理。许多刚接触可以实现布局管理。许多刚接触 Android Android 的人都不是太了解的人都不是太了解 ViewGroup ViewGroup 和和 View View 之间的关系,其实,之间的关系,其实,ViewGroup ViewGroup 是是View View 的一个重要的一个重要子类。子类。ViewGroup ViewGroup 可以理解为视图容器
6、,开发者可以向其中添加一些基本可以理解为视图容器,开发者可以向其中添加一些基本的控件。例如在图的控件。例如在图 2.1 2.1 所示界面中,账号和密码两个输入框如何保持对齐,所示界面中,账号和密码两个输入框如何保持对齐,“登录登录”按钮如何居中显示,这些都可以通过将控件放入按钮如何居中显示,这些都可以通过将控件放入 ViewGroup ViewGroup 中来中来管理。管理。ViewGroup ViewGroup 是一个抽象类,在开发过程中,通过实现它的子类来排是一个抽象类,在开发过程中,通过实现它的子类来排列控件的显示位置。列控件的显示位置。Android Android 中所有的界面都建立
7、中所有的界面都建立在在 View View 和和 ViewGroup ViewGroup 的基础上,的基础上,ViewGroup ViewGroup 除了装载普通控件,还除了装载普通控件,还可以再次包含可以再次包含 ViewGroup ViewGroup 组件。图组件。图 2.2 2.2 是一个是一个 Android Android 界面的层次结界面的层次结构图。构图。4 4开发用户界面的方式开发用户界面的方式 Android Android 支持使用以下两种方式定义用户界面。支持使用以下两种方式定义用户界面。(1 1)通过)通过 Java Java 代码定义控件并设置控件的属性。代码定义控件
8、并设置控件的属性。(2 2)通过)通过 XML XML 文件控制控件的布局和属性。文件控制控件的布局和属性。通过通过 XML XML 布局文件控制布局文件控制 Android Android 的界面,可以使界面的设计更加简的界面,可以使界面的设计更加简单清晰,具有更低的耦合性。单清晰,具有更低的耦合性。而且这种方式可以将视图的逻辑从而且这种方式可以将视图的逻辑从 Java Java 代码中抽离出来,更加符合代码中抽离出来,更加符合 MVCMVC(一种用模型(一种用模型视图视图控制器设计创建控制器设计创建 Web Web 应用程序的模式)的设计应用程序的模式)的设计原则。原则。Android A
9、ndroid 也推荐使用也推荐使用 XML XML 的方式设计界面。的方式设计界面。2.2 常用布局 在在 Android Android 界面开发中,控件的布局非常重要,布局可以用来管理控件的界面开发中,控件的布局非常重要,布局可以用来管理控件的分布和大小。不同的布局管理可以产生不同的布局效果,开发者需要根据不同的分布和大小。不同的布局管理可以产生不同的布局效果,开发者需要根据不同的应用场景选择合适的布局管理,本节我们将介绍一些常用的布局方式。应用场景选择合适的布局管理,本节我们将介绍一些常用的布局方式。2.2.1 2.2.1 线性布局线性布局 线性布局通过线性布局通过 LinearLayo
10、ut LinearLayout 类来实现,类来实现,LinearLayout LinearLayout 是前述是前述ViewGroup ViewGroup 的子类,是一个视图容器,可以向其中添加不同的控件。的子类,是一个视图容器,可以向其中添加不同的控件。LinearLayout LinearLayout 将控件将控件一个挨着一个排列起来,排列的顺序有横向排列和纵向排列。例如图一个挨着一个排列起来,排列的顺序有横向排列和纵向排列。例如图 2.1 2.1 所示所示的手机的手机 QQ QQ 的登录页面中,账号输入框和密码输入框顺序排列,就可以通过将这的登录页面中,账号输入框和密码输入框顺序排列,就
11、可以通过将这两个控件放入两个控件放入 LinearLayout LinearLayout 中来实现。中来实现。图图 2.3 2.3 所示的是一个简化所示的是一个简化的登录界面的一部分,有一个文的登录界面的一部分,有一个文本框会提示用户输入用户名,后本框会提示用户输入用户名,后面紧跟着一个编辑框供用户输入面紧跟着一个编辑框供用户输入具体的内容。具体的内容。p 案例分析案例分析 在在 act_layout_horizontal.xml act_layout_horizontal.xml 文件中,首先定义了一个文件中,首先定义了一个LinearLayout LinearLayout 布局,其中以布局
12、,其中以 android:android:开头的开头的xml xml 属性设置了组件的一些参数。属性设置了组件的一些参数。android:layout_width android:layout_width 和和 android:layout_height android:layout_height 分别设置了组件的分别设置了组件的宽度和高度,有宽度和高度,有 3 3 种合理的取值方式,分别如下所示。种合理的取值方式,分别如下所示。(1 1)match_parent/fill_parentmatch_parent/fill_parent:设置当前:设置当前 View View 的大小尽可能和父控
13、件的的大小尽可能和父控件的大小一致,在大小一致,在 API Level 8 API Level 8以后以后 fill_parent fill_parent 被废弃,使用被废弃,使用match_parentmatch_parent。(2 2)wrap_contentwrap_content:设置当前:设置当前 View View 的大小自适应要显示的内容。的大小自适应要显示的内容。(3 3)固定值:设置当前)固定值:设置当前 View View 的尺寸为固定大小。的尺寸为固定大小。下面我们给出一个示例,运行结果如下面我们给出一个示例,运行结果如图图 2.4 2.4 所示。读者可以根据运行结果去理
14、所示。读者可以根据运行结果去理解布局文件,用到的控件和案例解布局文件,用到的控件和案例 2.1 2.1 一致,一致,注意其中注意其中 android:orientation android:orientation 的值。的值。2.2.2 2.2.2 相对布局相对布局 相对布局主要通过相对布局主要通过 RelativeLayout RelativeLayout 类来实现,对于有些界面,如果类来实现,对于有些界面,如果很难用线性布局实现,或者使用线性布局嵌套的层次太深,可以考虑使用更很难用线性布局实现,或者使用线性布局嵌套的层次太深,可以考虑使用更灵活的相对布局。灵活的相对布局。相对布局容器中子控
15、件的位置是由父控件或者其他兄弟控件定义的。相对布局容器中子控件的位置是由父控件或者其他兄弟控件定义的。可以使当前的控件与其他控件的边界对齐,或者在某个控件的下面,又或者可以使当前的控件与其他控件的边界对齐,或者在某个控件的下面,又或者在父控件的中间位置。在父控件的中间位置。例如在图例如在图 2.1 2.1 所示的手机所示的手机 QQ QQ 的登的登录页面中,我们可以通过纵向线性布局去录页面中,我们可以通过纵向线性布局去排列每一个控件,也可以通过相对布局实排列每一个控件,也可以通过相对布局实现,如可以设置密码输入框在账号输入框现,如可以设置密码输入框在账号输入框的下面,的下面,“登录登录”按钮在
16、布局中水平居中。按钮在布局中水平居中。在相对布局中,子控件默认会从布局的左在相对布局中,子控件默认会从布局的左上角开始显示,所以,需要通过一些属性上角开始显示,所以,需要通过一些属性去设置控件的位置,常见的属性如表去设置控件的位置,常见的属性如表 2.1 2.1 所示。所示。下面我们通过一个示例看一下相对布局的用法,运行结果如图下面我们通过一个示例看一下相对布局的用法,运行结果如图 2.5 2.5 所示。所示。p 案例分析案例分析 在图在图 2.5 2.5 所示界面中,第所示界面中,第 1 1 个个 TextView TextView 仅仅设置了控件的大小、文仅仅设置了控件的大小、文字的颜色、
17、尺寸等,控件默认显示在布局的左上角。第字的颜色、尺寸等,控件默认显示在布局的左上角。第 2 2 个个 TextView TextView 设置设置了了 android:layout_centerVertical=true android:layout_centerVertical=true属性,控件垂直居中显示在布属性,控件垂直居中显示在布局中。第局中。第 3 3 个个 TextView TextView 设置了设置了android:layout_centerInParent=trueandroid:layout_centerInParent=true属性,控件处于布局的正中间位置。第属性,控
18、件处于布局的正中间位置。第 4 4 个个 TextView TextView 设置了设置了android:android:layout_above=id/txt3layout_above=id/txt3和和 android:layout_ alignLeft=id/txt3 android:layout_ alignLeft=id/txt3属属性,控件位于性,控件位于 txt3 txt3 的上方,且的上方,且 txt4 txt4 控件的左边界与控件的左边界与 txt3 txt3 控件的左边界控件的左边界对齐。类似地,第对齐。类似地,第 5 5 个个 TextView TextView 在第在第
19、 3 3 个个 TextView TextView 的右边,且两个控的右边,且两个控件的上边界是对齐的。件的上边界是对齐的。2.2.3 2.2.3 列表视图列表视图 ListView ListView 是是 Android Android 中一个常用的控件,可以实现列表视图,它展示中一个常用的控件,可以实现列表视图,它展示了一个垂直可滑动的下拉列表,例如图了一个垂直可滑动的下拉列表,例如图 2.6 2.6 所示的是手机中常见的文件管理所示的是手机中常见的文件管理页面,打开之后会有一个列表显示手机中所有的文件夹,其中的每一行称为页面,打开之后会有一个列表显示手机中所有的文件夹,其中的每一行称为
20、ListView ListView 的一个子项。的一个子项。ListView ListView 同样继承自同样继承自 ViewGroup ViewGroup,但是和之前的,但是和之前的 LinearLayoutLinearLayout、RelativeLayout RelativeLayout 不同,不同,ListView ListView 不是用来控制子控件的不是用来控制子控件的布局,而是可以根据数据源动态地添加每一个子项,需要显示的列表项由布局,而是可以根据数据源动态地添加每一个子项,需要显示的列表项由 Adapter Adapter 类提供。这样的设计也很好地符合了类提供。这样的设计也很
21、好地符合了 MVC MVC原则,原则,ListView ListView 只负责只负责视图的显示,而视图的显示,而 Adapter Adapter 则提供需要显示的数据。同时,这里还用到了一个则提供需要显示的数据。同时,这里还用到了一个设计模式:适配器模式。设计模式:适配器模式。Adapter Adapter 提供了将数据源转换成适合提供了将数据源转换成适合 ListView ListView 显显示的接口。示的接口。ListView ListView 有几个常用的属性,如表有几个常用的属性,如表 2.2 2.2 所示。所示。利用列表视图可以实现如图利用列表视图可以实现如图 2.7 2.7 所
22、示的效果。所示的效果。案例分析案例分析 在布局文件中,只定义了一个在布局文件中,只定义了一个 ListView ListView 控件,控件,ListView ListView 设置了设置了android:android:divider divider 属性,定义了属性,定义了 ListView ListView中两个子项的分隔条,可以指定为固定颜色或中两个子项的分隔条,可以指定为固定颜色或者者 Drawable Drawable 资源,这里我们重点关注资源,这里我们重点关注 ListView ListView 的用法,所以直接设置了一个的用法,所以直接设置了一个颜色值。颜色值。android
23、:dividerHeight android:dividerHeight 设置了分隔条的高度。设置了分隔条的高度。android:entries android:entries 设设置了置了 ListView ListView需要显示的数据,这里通过需要显示的数据,这里通过array array 引用了一个数组资源文件。资引用了一个数组资源文件。资源文件在源文件在 2.6 2.6 节会有详细介绍。在节会有详细介绍。在Activity Activity 中加载上述布局即可看到案例效果。中加载上述布局即可看到案例效果。在在 XML XML 文件中直接设置数据源的方式简单,但不够灵活。可以通过文件中
24、直接设置数据源的方式简单,但不够灵活。可以通过 Adapter Adapter 类为类为 ListView ListView 填充数据,根据数据类型的不同,填充数据,根据数据类型的不同,Android Android 系系统提供了统提供了 ArrayAdapter ArrayAdapter、ListAdapterListAdapter、SimpleCursorAdapterSimpleCursorAdapter。p 案例分析案例分析 布局文件是在案例布局文件是在案例 2.4 2.4 的基础上去掉的基础上去掉 android:entries android:entries 属性,运行结属性,运行
25、结果和图果和图 2.7 2.7 所示的一致。本例中,我们首先通过所示的一致。本例中,我们首先通过 findViewById findViewById 方法得到方法得到 ListView ListView 控件,从该方法的命名也可以看出,它是通过控件的控件,从该方法的命名也可以看出,它是通过控件的id id 来获取控件来获取控件对象的。然后定义了一个对象的。然后定义了一个 ArrayAdapter ArrayAdapter 对象,构造方法传入了对象,构造方法传入了 3 3 个参数,个参数,第第 1 1 个参数为一个个参数为一个 Context Context 对象,传对象,传 this this
展开阅读全文