编辑推荐
(1)易学易懂。本书面向Android系统的初学者,在叙述方式上浅显易懂,摒弃枯燥的理论,尽可能使用图示加以说明。对每一个知识点,都配了相应的例题。所有例题均短小精悍,适合课堂教学讲授。读者学完每一章内容后都可以编写出相应功能的程序。
(2)解释详细。对每一个例题,均进行了详细分析和解释,既可以帮助读者学习理解知识和概念,大大降低学习难度,又具有启发性。
(3)Java语言零基础学习。为了帮助没有Java语言基础的读者学习Android系统,特别安排了一章介绍Java基础知识的内容。
(4)配有视频教学 。书中大部分例题均录制了视频教学,详细地记录了设计的操作过程,对重点和难点问题作了详细讲解,帮助读者更加轻松、迅速地理解和掌握本书内容。
内容简介
本书是面向Android Studio初学者的入门教程,内容基本涵盖了Android相关的所有技术,大致可以分成两个部分。第一部分(第1~4章)主要介绍Android Studio的安装、应用程序的结构、图形用户界面的组件及其设计方法;第二部分(第5~9章)主要介绍较高级的主题,内容包括后台服务与系统服务、网络通信技术、数据存储技术、地图服务与传感器检测技术等。
本书内容浅显易懂,对每一个知识点都配了相应的例题。本书提供了电子课件和所有例题的源代码,扫描每章提供的二维码可观看教学视频。
本书可作为高等院校及各类培训学校Android系统课程的教材,也可作为希望学习Android系统开发的读者的自学用书。
目录
第1章 Android系统及其开发过程 1
1.1 Android系统概述 1
1.1.1 Android系统及特点 1
1.1.2 Android系统的体系结构 2
1.1.3 Android开发的分类 3
1.2 搭建Android Studio开发环境 4
1.2.1 安装Android Studio前的必要准备 4
1.2.2 安装Android Studio详解 5
1.2.3 设置环境变量 7
1.3 Android API和在线帮助文档 8
1.4 Android应用程序的开发过程 9
1.4.1 开发Android应用程序的一般过程 9
1.4.2 生成Android应用程序框架 10
1.4.3 编写代码生成MainActivity.java 12
1.4.4 在模拟器中运行应用程序 13
1.5 Android项目结构 13
1.5.1 目录结构 13
1.5.2 Android应用程序结构分析 19
1.6 Android应用程序设计示例 21
习题1 23
第2章 Android用户界面的设计 24
2.1 用户界面组件包widget和View类 24
2.2 文本标签TextView与按钮Button 25
2.2.1 文本标签 25
2.2.2 按钮及按钮处理事件 27
2.3 文本编辑框 32
2.4 Android布局管理 35
2.4.1 布局文件的规范与重要属性 36
2.4.2 常见的布局方式 37
2.5 进度条和选项按钮 46
2.5.1 进度条 46
2.5.2 选项按钮 48
2.6 图像显示类ImageView与画廊组件类Gallery 55
2.6.1 图像显示类ImageView 55
2.6.2 画廊组件类Gallery与图片切换器ImageSwitcher 59
2.7 消息提示类Toast 64
2.8 列表组件 67
2.8.1 列表组件类ListView 67
2.8.2 ListActivity类 69
2.9 滑动抽屉组件类SlidingDraw 72
习题2 76
第3章 多个用户界面的程序设计 78
3.1 页面的切换与传递参数值 78
3.1.1 传递参数组件Intent 78
3.1.2 Activity页面的切换 78
3.1.3 应用Intent在Activity页面之间传递数据 82
3.2 菜单设计 86
3.2.1 选项菜单 86
3.2.2 上下文菜单 89
3.3 对话框 91
3.3.1 消息对话框AlertDialog 91
3.3.2 其他几种常用对话框 96
习题3 100
第4章 图形与多媒体处理 101
4.1 绘制几何图形 101
4.1.1 几何图形绘制类 101
4.1.2 几何图形的绘制过程 102
4.1.3 自定义组件 107
4.2 触摸屏事件的处理 110
4.2.1 简单的触摸屏事件 110
4.2.2 手势识别 116
4.3 音频播放 120
4.3.1 多媒体处理包 120
4.3.2 多媒体处理播放器MediaPlayer 120
4.3.3 播放音频文件 121
4.4 视频播放 127
4.4.1 应用媒体播放器播放视频 127
4.4.2 应用视频视图播放视频 130
4.5 录音与拍照 133
4.5.1 用于录音、录像的MediaRecorder类 133
4.5.2 录音示例 134
4.5.3 拍照 137
4.6 动画技术 142
4.6.1 动画组件类 142
4.6.2 补间动画Tween Animation 143
4.6.3 属性动画Property Animation 148
习题4 152
第5章 后台服务与系统服务 153
5.1 后台服务Service 153
5.2 信息广播机制Broadcast 157
5.3 系统服务 166
5.3.1 Android的系统服务 166
5.3.2 系统通知服务Notification 167
5.3.3 系统定时服务AlarmManager 169
5.3.4 系统功能的调用 172
习题5 175
第6章 网络通信技术 176
6.1 Web视图 176
6.1.1 浏览器引擎WebKit 176
6.1.2 Web视图对象 176
6.1.3 调用JavaScript 180
6.2 基于TCP协议的网络程序设计 186
6.2.1 网络编程的基础知识 187
6.2.2 利用Socket设计客户机/服务器系统程序 191
6.2.3 应用Callable接口实现多线程Socket编程 196
6.3 基于HTTP协议网络程序设计 200
6.3.1 建立PHP服务器网站 200
6.3.2 应用HttpURLConnection访问Web服务器 200
习题6 210
第7章 应用Volley框架访问Web服务器 211
7.1 Volley框架及其应用 211
7.1.1 Volley包的下载与安装 211
7.1.2 JSON数据格式简介 212
7.1.3 Volley的工作原理和几个重要对象 216
7.1.4 Volley的基本使用方法 217
7.2 应用Volley框架设计网络音乐播放器 221
习题7 226
第8章 数据存储技术 227
8.1 SQLite数据库 227
8.1.1 SQLite数据库简介 227
8.1.2 管理和操作SQLite数据库的对象 228
8.1.3 SQLite数据库的操作命令 228
8.2 文件的处理 240
8.2.1 输入/输出流 240
8.2.2 处理文件流 241
8.3 轻量级存储SharedPreferences 248
8.4 访问远程数据库 250
习题8 255
第9章 地图服务与传感器检测技术 256
9.1 电子地图服务的应用程序开发 256
9.1.1 Android地图的SDK开发包的下载以及Key的申请 256
9.1.2 显示地图的应用程序示例 259
9.2 传感器检测技术 262
9.2.1 传感器简介 262
9.2.2 加速度传感器的应用示例 264
习题9 273
精彩书摘
多个用户界面的程序设计
3.1 页面的切换与传递参数值
3.1.1 传递参数组件Intent
Intent是Android系统的一种运行时的绑定机制,在应用程序运行时连接两个不同组件。在Android 的应用程序中不管是页面切换还是传递数据或是调用外部程序都可能要用到Intent。Intent负责对应用中某次操作的动作、动作涉及的数据、附加数据进行描述,Android则根据此Intent的描述负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。因此可以将Intent理解为不同组件之间通信的“媒介”,其专门提供组件互相调用的相关信息。
Intent的属性有动作(Action)、数据(Data)、分类(Category)、类型(Type)、组件(Compent)以及扩展(Extra),其中最常用的是Action属性。
例如:
Intent.ACTION_MAIN 表示标识Activity为一个程序的开始。
Intent.ACTION_GET_CONTENT 表示允许用户选择图片或录音等特殊种类的数据。
Intent.ACTION_SEND 表示发送邮件的action动作。
Telephony.SMS_RECEIVED 表示接收邮件的action动作。
Intent.ACTION_ANSWER 表示处理呼入的电话。
Intent.Action_CALL_BUTTON 表示按“拨号”键。
Intent.Action_CALL 表示呼叫指定的电话号码。
3.1.2 Activity页面的切换
Activity跳转与传递参数值主要通过Intent类协助实现。在一个Activity页面中启动另一个Activity页面的运行是最简单的Activity页面切换方式。其步骤如下:
(1)创建一个Intent对象,其构造方法如下。
Intent intent = new Intent(当前Activity.this, 另一Activity.class);
(2)调用Activity的startActivity(intent)方法,切换到另一个Activity页面。
【例3-1】 从一个Activity页面启动另一个Activity页面示例。
创建名称为ex3_1的新项目,包名为com.ex3_1。在本项目中要建立两个页面文件及两个控制文件,第1个页面的界面布局文件为activity_main.xml、控制文件为MainActivity.java,第2个页面的界面布局文件为second.xml、控制文件为secondActivity.java,还要修改配置文件AndroidManifest.xml。
(1)设计第1个页面。
① 修改第1个页面的控制文件MainActivity.java,源代码如下:
1 package com.ex3_1;
2 import android.app.Activity;
3 import android.content.Intent;
4 import android.os.Bundle;
5 import android.view.View;
6 import android.view.View.OnClickListener;
7 import android.widget.Button;
8 public class MainActivity extends Activity
9 {
10 private Button btn;
11 @Override
12 public void onCreate(Bundle savedInstanceState)
13 {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.activity_main);
16 btn = (Button)findViewById(R.id.mButton);
17 btn.setOnClickListener(new btnclock());
18 }
19 class btnclock implements OnClickListener
20 {
21 public void onClick(View v)
22 {
23 Intent intent = new Intent(MainActivity.this, secondActivity.class);
24 //创建好Intent之后就可以通过它启动新的Activity
25 startActivity(intent);
26 }
27 }
28 }
② 第1个页面的布局文件activity_main.xml如下:
1
2
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 android:id="@+id/textView1"
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="@string/hello" />
11
12 android:id="@+id/mButton"
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 android:text="@string/button"
16 />
17
(2)设计第2个页面。
① 在项目中新建第2个页面的控制文件secondActivity.java。右击资源管理器中的com.example.ex3_1选项,在弹出的快捷菜单中选择New(新建)→File(文件)命令,如图3.1所示。
……
前言/序言
与第1版相比,第2版的最大修改之处是把开发工具Eclipse换成了Android Studio。这主要考虑Android Studio是Google公司推出的专门为Android“量身定制”的开发工具,是Google大力支持的一款基于IntelliJ IDEA改造的IDE集成开发环境,可以说它是Android开发工具的未来。
第2版删除了第1版中Java语言基础知识简介的章节,增加了访问Web服务器数据的内容。另外,由于Android Studio与Eclipse的目录结构和菜单差异很大,因此很多例题在介绍操作时做了修改。
第2版全书共分9章,第1章主要讲解Android Studio开发环境的搭建,并介绍了开发Android应用程序的步骤和应用程序框架的结构;第2~3章讲解如何使用布局和视图创建用户界面,介绍了用户图形界面的常用组件;第4章介绍图形与多媒体处理技术,介绍了绘制几何图形的基本方法、处理触摸屏事件的方法,还详细讨论了音频播放和视频播放的设计以及录音、照相技术,并详细讲解了在Android中实现动画的技术;第5章介绍后台服务与系统服务,以及系统功能调用;第6章介绍网络通信技术,介绍了Web视图以及基于TCP协议的网络程序设计、基于HTTP协议的网络程序设计等网络编程技术;第7章介绍应用Volley框架访问Web服务器,并介绍了JSON数据格式和一个网络音乐播放器设计实例;第8章介绍数据存储技术,介绍了SQLite数据库存储方式、文件存储方式和XML文件的SharedPreferences存储方式,还介绍了访问远程数据库的方法;第9章讲解地图服务与传感器检测技术,地图服务主要介绍实现地图视图的基本方法,传感器检测主要介绍重力加速度的应用。
本书提供了电子课件和所有例题的源代码,扫描每章提供的二维码可观看教学视频。
张思民
2017年5月
Android Studio应用程序设计(第2版)(微课版)/21世纪高等学校计算机类课程创新规划 图书简介 引言 在信息技术飞速发展的浪潮中,移动应用已成为人们日常生活不可或缺的一部分,深刻地改变着我们的沟通、学习、工作乃至娱乐方式。Android作为全球最受欢迎的移动操作系统,其开放的生态系统和庞大的用户基础,吸引着无数开发者投身其中,创造出丰富多样的应用程序。对于 aspiring mobile developers 而言,掌握Android应用程序设计与开发的核心技能,已经成为一项至关重要的能力。 本书,《Android Studio应用程序设计(第2版)(微课版)/21世纪高等学校计算机类课程创新规划》,正是为此而生。作为一本面向高等教育计算机类专业的教材,它不仅旨在传授扎实的Android开发技术,更注重培养学生的应用创新能力和解决实际问题的能力。本书秉承“以实践为导向,以创新为驱动”的教学理念,通过精心设计的课程体系和丰富的实践内容,引领读者从零开始,逐步成长为一名合格的Android应用程序开发者。 本书亮点与特色 本书最大的特色在于其“微课版”的定位,这意味着在内容设计上,我们更加注重知识点的精炼与提炼,将复杂的概念分解为易于理解的模块,并辅以大量的微视频讲解,使学习过程更加生动、高效。同时,本书紧密结合“21世纪高等学校计算机类课程创新规划”,积极探索新的教学模式与方法,鼓励学生在掌握基础知识的同时,勇于探索和创新,将理论知识转化为实际的应用成果。 核心内容概述 本书内容涵盖了Android应用程序设计与开发的方方面面,从基础的环境搭建到高级的应用技巧,力求为读者提供一个全面而深入的学习路径。 第一部分:Android开发基础入门 Android开发环境搭建与项目创建: 详细介绍Android Studio的安装、配置,以及如何创建第一个Android项目。我们将带领读者熟悉Android Studio的界面布局,了解各种工具的作用,为后续的开发工作打下坚实的基础。 Android应用基本构成: 深入讲解Android应用程序的四大组件——Activity, Service, Broadcast Receiver, Content Provider,以及它们之间的交互关系。读者将理解每个组件的功能和生命周期,并学会如何合理地设计和使用它们。 用户界面设计(UI)与布局: 掌握XML布局文件的编写,学习ConstraintLayout, LinearLayout, RelativeLayout等常用布局管理器,理解Activity与XML布局文件的绑定机制。同时,本书将介绍Material Design设计理念,引导读者设计出美观、易用的用户界面。 控件的使用与事件处理: 详细讲解各种常用UI控件,如TextView, EditText, Button, ImageView, CheckBox, RadioButton, Spinner等,并教会读者如何为这些控件添加事件监听器,实现用户交互。 第二部分:深入Android应用开发 Activity生命周期与导航: 深入剖析Activity的启动模式、任务栈概念,以及Activity之间的跳转与数据传递。读者将学会如何有效地管理Activity的生命周期,避免内存泄漏和不必要的资源消耗。 Fragment的使用与管理: 学习Fragment作为Activity的补充,如何实现可复用的UI模块,以及Fragment之间的通信。通过Fragment,读者将能构建出更具灵活性和适应性的界面。 数据存储与管理: 介绍多种Android数据存储方案,包括SharedPreferences, 文件存储,SQLite数据库,以及ContentProvider。读者将学会如何选择最合适的数据存储方式,并实现数据的持久化。 网络通信与数据获取: 讲解Android应用如何与服务器进行网络通信,包括HTTP请求、JSON数据解析等。本书将介绍常用的网络请求库,如Retrofit,帮助读者高效地获取和处理网络数据。 多线程与异步处理: 理解Android主线程(UI线程)的特点,学习如何使用Handler, AsyncTask, ThreadPoolExecutor等机制进行多线程编程,避免ANR(Application Not Responding)错误,保证应用的流畅运行。 第三部分:高级Android开发技巧与创新实践 服务(Service)的深入应用: 讲解Service的启动模式、生命周期,以及如何在后台执行耗时操作,如音乐播放、数据同步等。 广播接收器(BroadcastReceiver)与意图(Intent)的进阶: 学习如何创建和注册系统广播,以及自定义广播。深入理解Intent的各种类型及其在组件间通信中的作用。 后台任务与消息推送: 介绍WorkManager等现代化的后台任务管理工具,以及如何集成第三方推送服务,实现消息的实时推送。 权限管理与安全性: 讲解Android应用权限系统的原理,以及如何申请和管理运行时权限,确保应用的安全性。 测试与调试: 介绍单元测试、集成测试的方法,以及Android Studio提供的调试工具,帮助读者编写高质量、稳定可靠的应用。 第三方库的集成与使用: 引导读者如何利用丰富的第三方开源库,快速开发出功能强大的应用程序,如图片加载库、网络请求库、UI组件库等。 第四部分:创新应用开发与实战项目 智能设备交互(如传感器、GPS): 引导读者探索如何利用Android的传感器API,获取设备信息,实现与物理世界的交互,例如计步器、指南针等应用。 多媒体应用开发: 介绍如何使用Android提供的API处理音频、视频和图像,开发简单的媒体播放器或图片浏览器。 物联网(IoT)应用基础: 结合当前物联网发展趋势,本书将探讨Android应用在智能家居、智能穿戴等领域的应用可能性,为学生未来的创新项目提供思路。 实战项目案例分析与开发: 本书包含多个精心设计的实战项目,从需求分析、架构设计到代码实现,全流程演示如何开发一个完整的Android应用程序。这些项目涵盖了社交、工具、娱乐等多个领域,旨在让读者学以致用,巩固所学知识。 创新思维培养与项目构思: 除了技术层面的传授,本书还注重启发学生的创新思维,引导他们思考如何发现实际问题,并利用Android技术来解决。我们将分享一些创新应用的案例,鼓励学生进行独立的思考和项目构思。 教学模式与学习体验 本书采用“微课+图文+实践”的融合式教学模式。每一章都配有精炼的微视频讲解,将抽象的概念具象化,帮助读者快速掌握核心知识点。图文并茂的讲解,配合代码示例,让学习过程更加直观易懂。大量的实践练习和课程项目,将理论知识转化为实际操作能力,让读者在动手实践中不断成长。 目标读者 本书适合以下读者: 高等院校计算机科学与技术、软件工程、物联网工程等相关专业的本科生和研究生。 希望系统学习Android应用程序设计与开发技能的初学者。 对移动开发感兴趣,希望进行职业转型或提升的开发者。 致力于Android应用创新与实践的爱好者。 结语 《Android Studio应用程序设计(第2版)(微课版)/21世纪高等学校计算机类课程创新规划》不仅仅是一本技术书籍,更是一个引导读者探索移动开发世界,激发创新潜能的平台。我们希望通过本书,帮助读者建立扎实的Android开发基础,掌握解决实际问题的能力,并为他们未来的学习和职业生涯奠定坚实的基础。在这个充满机遇的移动互联网时代,让我们一起,用代码创造无限可能!