Android应用开发案例教程(Android Studio版)pdf/doc/txt格式电子书下载
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询
书名:Android应用开发案例教程(Android Studio版)pdf/doc/txt格式电子书下载
推荐语:
作者:张霞编
出版社:人民邮电出版社
出版时间:2019-08-01
书籍编号:30512943
ISBN:9787115446893
正文语种:中文
字数:260347
版次:1
所属分类:教材教辅-中职/高职
版权信息
书名:Android应用开发案例教程(Android Studio版)
作者:张霞
出版社:人民邮电出版社
ISBN:9787115446893
出版日期:2019-08-01
版权所有 · 侵权必究
内容提要
本书内容浅显易懂,可操作性强。全书共分9章,第1~7章详细介绍了Android Studio基础知识,包括Android UI设计、Activity与多个用户界面、多媒体播放与录制、广播与服务、数据存储、图像和动画、网络编程;第8、9章介绍了两个实践项目,帮助读者将基础知识融会贯通,并结合最新的Android技术做适度拓展。
为避免冗余,书中省略了一些简单的布局源代码,读者可以通过扫描二维码查看完整源代码。
本书可作为高职院校Android系列课程的教材,也可作为Android初学者的自学用书。
前言
生活与移动互联网已经变得形影不离,人们只需要轻轻点触指尖,就能随时随地获取想要的信息。移动互联网时代已经开启,它已成为全世界商业和科技创新发展的加速器,成为当今时代最大的机遇和挑战。Android系统是一个开放式的移动互联网操作系统,今天的Android已经成为应用最广泛的移动互联网平台。
本书内容浅显易懂,采用Android Studio IDE开发环境,通过典型应用实例来引导知识点,将相关知识融入实例之中。读者可以通过实例逐步掌握Android系统的开发,再通过实践项目来强化Android应用能力。
本书的主要内容及学习要求如表1所示,学时分配表如表2所示。
表1 本书主要内容及学习要求

续表

续表

表2 学时分配表(64学时)

第一部分(第1~7章)推荐64学时,第二部分(第8、9章)两个实践项目,可以安排1~2周的课程实训。本书提供实践项目的初始代码和完成后的完整代码,学生按照本书的指引完成关键步骤即可实现所有功能。
本书提供电子教案、全部实例的源代码等资源,读者可登录人邮教育社区(www.ryjiaoyu.com)下载。
由于编者水平和经验有限,书中难免有不妥和疏漏之处,恳请读者批评指正。如有任何意见或建议,请发邮件至E-mail: zhangxia@szpt.edu.cn。
编者
2019年6月
第1章 Android UI设计
学习目标
熟悉Android Studio开发工具
熟悉Android项目的创建
掌握常用UI布局
掌握常用界面组件
本章从创建一个Android新项目开始,一步一步展开Android的开发设计,通过15个案例重点介绍界面的布局设计及常用界面组件。
用户界面设计又称为UI(User Interface)设计,UI设计是本章的重点,图1-1展示了本章案例涉及的布局文件。通常一个项目需要多个界面,几乎每个界面都有对应的XML布局文件。
图1-1 本章案例涉及的布局文件
Android Studio的安装与配置参见本书的附件。
1.1 新建Android项目
1.1.1 Android Studio自动构建新项目
启动Android Studio,选择“Start a new Android Studio project”,如图1-2所示。然后在弹出的对话框中输入应用程序名称(Chap01)、包名等参数,并选择Android SDK的版本。新装环境的第一个项目的构建时间会比较长。
图1-2 Android Studio启动后的第一个界面
1.1.2 Android项目结构
打开Chap01项目,在项目资源管理器中可以看到应用项目的文件目录结构,如图1-3所示。
图1-3 应用项目的文件目录结构
1.app模块下的文件目录结构
manifests:项目的配置信息文件。
java:源代码和测试代码。
res:资源目录,用于存储项目所需的资源。
2.Gradle Scripts模块下的文件目录结构
该目录文件一般不用留意。Gradle是一种管理工具,抛弃了基于XML的各种烦琐配置,取而代之的是一种基于Groovy的领域专用语言(Domain Specified Language,DSL)。build.gradle文件内容简洁,提供了很多设置和属性的默认值。
3.资源目录res及其资源类型
res用于存放项目所需的声音、图片、用户界面等资源文件。res下的常用资源(如图片文件)一般会在R类中自动生成资源ID,封装在apk中。资源目录如表1-1所示,其中最重要的3个目录如下。
(1)drawable目录,存放图片资源。
(2)layout目录,存放用户界面布局文件。
(3)values目录,存放参数描述资源,都是XML文件,如字符串string.xml、颜色color.xml、数组arrays.xml。
表1-1 res下的常用资源目录

1.1.3 res资源引用方法
程序中引用资源时需要使用R类,其引用形式为:
R.资源类型.资源名称
例如:
(1)在Activity中显示布局视图
set Content View(R.layout.main);
该set方法引用布局文件main,生成指定布局的视图,并将其放置在屏幕上。布局视图生成后,布局包含的组件随之完成实例化,转换为Java程序的视图对象。
(2)Java程序要获得布局文件中的图片组件img
img = (Image)finad View By Id(R.id.img);
(3)Java程序要获得布局文件中的列表组件alist
alist = (List)find View By Id(R.id.alist);
1.1.4 AndroidManifest.xml项目配置文件
每个应用程序都需要项目配置文件AndroidManifest.xml,它位于应用程序的根目录main下面。该文件代码解释如表1-2所示。
表1-2 AndroidManifest.xml文件代码解释

1.1.5 Android应用程序架构分析
1.逻辑控制层与表现层
在Android应用程序中,逻辑控制层与表现层是分开设计的。逻辑控制层由Java应用程序实现,表现层由XML文档描述。
逻辑控制层与表现层的关系如图1-4所示。
图1-4 逻辑控制层与表现层的关系
2.Activity主程序介绍
Activity与布局文件的关联是非常重要的一个环节。要想让布局显示到屏幕上,首先要在控制文件Activity启动时把布局文件显示出来。Activity类中重写了onCreate()方法,每个Activity都要进行一些必要的初始化,而这些初始化就是通过调用父类的onCreate()函数来进行的。
图1-5所示的第10行代码关联了布局文件activity_main.xml。本章的案例都很简单,只要使控制文件MainActivity分别关联15个案例的布局文件即可分别完成测试。
编程中如果提示相关的类没有被导入,按下【Alt+Enter】组合键,Android Studio会自动导入缺失的类。
图1-5 Activity主程序介绍
1.2 Android布局管理
Android系统应用程序的设计模式采用MVC模式,即把应用程序分为业务模型层(Model)、表现层(View)、控制层(Control)。按照这种模式,界面布局为表现层;Activity控制程序为控制层,将应用程序的界面设计与功能控制设计分离,从而可以单独地修改用户界面。
Android系统的布局管理指的是在XML布局文件中设置组件的大小、间距、排列及对齐方式等。Android系统中常用的布局类型有LinearLayout、FrameLayout、TableLayout、RelativeLayout、GridLayout、ConstraintLayout。
1.2.1 布局文件的规范与重要属性
1.布局文件的规范
Android系统应用程序的XML布局文件有以下规范。
(1)应存放在res/layout目录,其扩展名为.xml。
(2)根节点通常是一个布局方式,在根节点内可以添加组件作为节点。
(3)根节点必须包含一个命名空间:
xmlns:android=http://schemas.android.com/apk/res/android
(4)如果要在Java程序中控制布局的组件,则必须为相应的组件定义一个ID,其定义格式为:
android:id=\"@id/<组件ID>\"
(5)文件名只能由小写英文字母、数字和下划线组成,并且只能以小写字母开头。
2.布局文件的重要属性
(1)设置组件大小的属性
wrap_content:根据组件内容的大小来决定组件的大小。
match_parent:使组件填充所在容器的所有空间。
(2)设置组件大小的单位
px(piexls,像素):即屏幕上的发光点。
dp(或dip)设备独立像素:一种支持多分辨率设备的抽象单位。
sp(scaled pixels,比例像素):设置字体大小。
(3)设置组件的对齐方式
对齐方式由 android:gravity 属性控制,其属性值有 top、bottom、left、right、center_horizontal、center_vertical等。
1.2.2 常见的布局方式
布局文件可以单独创建,创建时需要输入文件名,文件名的字母必须全部小写,然后选择布局类型。如图1-6所示,创建了一个新的线性布局文件,文件名是activity_second.xml。
图1-6 新建XML布局文件
1.线性布局
线性布局(LinearLayout)将组件按照水平或垂直方向排列。在XML布局文件中,由根元素LinearLayout来标识线性布局,由android:orientation属性来设置排列方向,其属性值有水平(horizontal)和垂直(vertical)两种。
(1)设置为水平方向:android:orientation=\"horizontal\"。
(2)设置为垂直方向:android:orientation=\"vertical\"。
【例1-1】线性布局应用示例。
设计一个有5个按钮的线性布局,其控件层级关系如图1-7所示。
图1-7 线性布局的控件层级关系
布局文件activity_main1.xml的源代码如下:
1. <?xml version=\"1.0\" encoding=\"utf-8\"?>
2. <Linear Layout xmlns:android=\"http://schemas.android.com/apk/res/android\"
3. android:layout_width=\"fill_parent\"
4. android:layout_height=\"fill_parent\"
5. android:orientation=\"vertical\" >
6. <Button
7. android:id=\"@+id/m Button1\"
8. android:layout_width=\"wrap_content\"
9. android:layout_height=\"wrap_content\"
10. android:text=\"1\" />
11. <Button
12. android:id=\"@+id/m Button2\"
13. android:layout_width=\"wrap_content\"
14. android:layout_height=\"wrap_content\"
15. android:text=\"2\" />
16. <Button
17. android:id=\"@+id/m Button3\"
18. android:layout_width=\"wrap_content\"
19. android:layout_height=\"wrap_content\"
20. android:text=\"3\" />
21. <Button
22. android:id=\"@+id/m Button4\"
23. android:layout_width=\"wrap_content\"
24. android:layout_height=\"wrap_content\"
25. android:text=\"4\" />
26. <Button
27. android:id=\"@+id/m Button4\"
28. android:layout_width=\"wrap_content\"
29. android:layout_height=\"wrap_content\"
30. android:text=\"5\" />
31. </Linear Layout>
程序运行结果如图1-8所示。
将代码中第5行的“android:orientation=\"vertical\"”(垂直方向的线性布局)更改为“android:orientation =\"horizontal\"”(水平方向的线性布局),则运行结果如图1-9所示。
图1-8 垂直方向线性布局示例结果
图1-9 水平方向线性布局示例结果
这5个按钮改为水平方向排列后,有一个按钮“5”被挤到了界面以外。在布局设计时必须考虑屏幕的宽度,不然就会发生这种意外。
2.帧布局
帧布局(Frame Layout)是将组件放置到左上角位置,当添加多个组件时,后面的组件将遮盖之前的组件。在XML布局文件中,由根元素Frame Layout来标识帧布局。
【例1-2】帧布局应用示例。
将准备的图像文件mm11.jpg复制到drawable目录下,然后新建图1-10所示的布局。
图1-10 布局的控件层级关系和属性
布局文件activity_main2.xml的源代码如下:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Frame Layout xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:app=\"http://schemas.android.com/apk/res-auto\"
android:layout_width=\"fill_parent\"
android:layout_height=\"match_parent\"
android:foreground=\"@drawable/logo\"
android:foreground Gravity=\"right|top\">
<TextView
android:id=\"@+id/txt\"
android:layout_width=\"350dp\"
android:layout_height=\"200dp\"
android:background=\"@color/color Accent\" />
<TextView
android:id=\"@+id/txt2\"
android:layout_width=\"250dp\"
android:layout_height=\"150dp\"
android:background=\"@color/color Primary\"
android:text=\"后添加的文本框\"
android:text Size=\"24sp\" />
</Frame Layout>
修改控制文件Main Activity.java的布局文件调用,这非常重要。
package com.example.chap01;
import android.os.Bundle;
import android.support.v7.app.App Compat Activity;
public class Main Activity extends App Compat Activity
{
@Override
public void onCreate(Bundle saved Instance State)
{
super.onCreate(saved Instance State);
set Content View(R.layout.activity_main2);// 修改布局文件调用
}
}
程序运行结果如图1-11所示,后添加的文本框组件遮挡了之前的图像。
3.表格布局
表格布局(Table Layout)是将页面划分成由行和列构成的单元格,由根元素Table Layout来标识。表格的行由<Table Row>…</Table Row>定义。组件放置时,由android:layout_column指定列序号。表格布局的3个常用属性如下。
(1)android:collapse Columns:设置需要被隐藏的列序号。
(2)android:shrink Columns:设置允许被收缩的列序号。
(3)android:stretch Columns:设置允许被拉伸的列序号。
【例1-3】表格布局应用示例。
设计一个3行4列的表格布局,如图1-12所示。
图1-11 帧布局示例结果
图1-12 表格布局
将准备好的图像文件mmx.jpg复制到res\\drawable目录下。
布局文件activity_main3.xml的源代码如下:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Table Layout xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:app=\"http://schemas.android.com/apk/res-auto\"
android:layout_width=\"fill_parent\"
android:layout_height=\"fill_parent\">
<Table Row>
<Image View
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
app:src Compat=\"@drawable/mmx\" />
<Image View
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
app:src Compat=\"@drawable/mmx\" />
</Table Row>
<Table Row>
<Image View
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
app:src Compat=\"@drawable/mmx\"
android:layout_column=\"1\"/>
<Image View
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
app:src Compat=\"@drawable/mmx\"
android:layout_column=\"2\"/>
</Table Row>
<Table Row>
<Image View
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
app:src Compat=\"@drawable/mmx\"
android:layout_column=\"3\"/>
</Table Row>
</Table Layout>
4.相对布局
相对布局(Relative Layout)是采用相对于其他组件的位置的布局方式。在相对布局中,通过指定ID关联其他组件,从而以右对齐、上对齐、下对齐或屏幕中央对齐等方式来排列组件。
在XML布局文件中,由根元素Relative Layout来标识相对布局。
【例1-4】应用相对布局设计一个图片和4个按钮,如图1-13所示。
图1-13 相对布局
布局文件activity_main4.xml的源代码如下:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Relative Layout xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:tools=\"http://schemas.android.com/tools\"
android:id=\"@+id/Relative Layout1\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\" >
<!-- 这个是在容器中央 -->
<Image View
android:id=\"@+id/img\"
android:layout_width=\"80dp\"
android:layout_height=\"80dp\"
android:layout_center In Parent=\"true\"
android:src=\"@drawable/abc\"
/>
<!-- 在图片的左边 -->
<Button
android:id=\"@+id/btn1\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_to Left Of=\"@id/img\"
android:layout_center Vertical=\"true\"
android:text=\"左边\"
/>
<!-- 在图片的右边 -->
<Button
android:id=\"@+id/btn2\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_to Right Of=\"@id/img\"
android:layout_center Vertical=\"true\"
android:text=\"右边\"
/>
<!-- 在图片的上面-->
<Button
android:id=\"@+id/btn3\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_above=\"@id/img\"
android:layout_center Horizontal=\"true\"
android:text=\"上面\"
/>
<!-- 在图片的下面 -->
<Button
android:id=\"@+id/btn4\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_below=\"@id/img\"
android:layout_center Horizontal=\"true\"
android:text=\"下面\"
/>
</Relative Layout>
5.网格布局
网格布局(Grid Layout)把设置区域划分为若干行和列的网格,网格中的一个组件可以占据多行或多列。应用网络布局的属性可以设置组件在网络中的大小和摆放方式。
网络布局的主要属性如下。
(1)alignment Mode:设置布局管理器的对齐方式。
(2)column Count:设置网格列的数量。
(3)row Count:设置网格行的数量。
(4)layout_column Span:设置组件占据的列数。
(5)layout_row Span:设置组件占据的行数。
常用的单元格属性如下。
(1)lay
....
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询