图书简介:
目 录
第一部分 基 础 篇
第1章 开发环境搭建和程序开发基础 2
1.1 Android简介 2
1.1.1 Android传奇 2
1.1.2 Android体系结构 3
1.2 搭建Android应用开发环境 4
1.2.1 Android 4.4安装 4
1.2.2 如何解决Android SDK无法
下载Package的问题 6
1.3 第一个Android程序 7
1.4 Android程序结构 8
1.5 Android应用的基本组件介绍 9
1.6 Activity的生命周期 10
1.7 程序调试 12
1.8 Android Studio 1.2正式版安
装与配置 13
1.8.1 Windows 7 64位系统安装
JDK并配置环境变量 13
1.8.2 Android Studio环境搭建 14
1.8.3 创建HelloWorld项目 19
1.9 相关阅读材料 23
1.9.1 未来的夏娃 23
1.9.2 Andy Rubin的黯然离场:
他为何非走不可? 23
1.9.3 Andy Rubin早年岁月 24
1.10 本章小结 25
习题1 26
第2章 用户界面设计 27
2.1 用户界面基础 27
2.2 常用控件 31
2.2.1 TextView和EditText 32
2.2.2 Button与ImageButton 33
2.2.3 单选按钮RadioButton和
复选按钮CheckBox 33
2.2.4 ImageView 33
2.2.5 ProgressBar 34
2.2.6 ScrollView 36
2.2.7 ListView 37
2.2.8 GridView 42
2.2.9 AlertDialog 42
2.3 界面布局 43
2.3.1 线性布局及android:
layout_weight属性设置 43
2.3.2 帧布局 45
2.3.3 表格布局 45
2.3.4 相对布局 46
2.3.5 绝对布局 47
2.3.6 网格布局 48
2.4 消息提示 48
2.5 Handler消息传递机制 49
2.6 项目实战——“3G商城”(一) 52
2.6.1 任务说明 52
2.6.2 项目讲解 52
2.6.3 典型代码及技术实现 53
2.7 相关阅读材料:Android用户界
面中单位的使用 59
2.8 本章小结 60
习题2 60
第3章 组件通信 61
3.1 Activity 61
3.1.1 Activity配置 61
3.1.2 启动和关闭Activity 62
3.1.3 使用Bundle在Activity之间
交换数据 62
3.1.4 调用另一个Activity并
返回结果 63
3.2 Intent对象 64
3.3 发送并返回短信内容举例 67
3.4 本章小结 68
习题3 68
第4章 后台服务与广播消息 69
4.1 Service应用 69
4.1.1 简介 69
4.1.2 进程内服务 69
4.1.3 跨进程服务 74
4.2 接收广播消息 77
4.2.1 简介 77
4.2.2 发送广播 79
4.2.3 有序广播 82
4.2.4 接收系统广播消息 83
4.3 相关阅读材料:Android开源库
EventBus 83
4.4 本章小结 89
习题4 91
第5章 数据存储与访问 92
5.1 使用SharedPreferences 92
5.1.1 简介 92
5.1.2 SharePreferences举例 94
5.2 文件存储 94
5.2.1 简介 94
5.2.2 读写SD卡上的文件 95
5.2.3 文件存储举例 96
5.3 SQLite数据库 96
5.3.1 简介 96
5.3.2 手动创建SQLite数
据库 96
5.3.3 SQLiteDatabase 98
5.4 数据共享 101
5.4.1 ContentProvider 101
5.4.2 创建数据提供者 102
5.4.3 使用数据提供者 103
5.4.4 ContentProvider举例 103
5.5 项目实战——课程表 104
5.5.1 任务说明 104
5.5.2 项目讲解 105
5.5.3 典型代码及技术要点 106
5.6 本章小结 109
习题5 109
第6章 Android网络应用 110
6.1 HTTP通信 110
6.2 Socket通信 115
6.3 使用WebView显示网页 119
6.4 项目实战——查询员工信息 123
6.4.1 任务说明 123
6.4.2 项目讲解 123
6.4.3 典型代码及技术要点 124
6.5 本章小结 126
习题6 127
第7章 图形图像处理 128
7.1 基本绘图 128
7.1.1 准备画布(Canvas) 128
7.1.2 准备画笔(Paint) 129
7.1.3 位图处理(Bitmap和
BitmapFactory) 129
7.2 2D绘图 130
7.2.1 几何图形 130
7.2.2 文本 132
7.2.3 路径 133
7.2.4 图片 133
7.3 图形特效处理 134
7.3.1 平移、旋转、缩放、倾斜 134
7.3.2 扭曲 136
7.3.3 位图着色器 137
7.4 综合练习 138
7.4.1 任务说明 138
7.4.2 代码实现 138
7.5 本章小结 140
习题7 140
第8章 Fragment 141
8.1 Fragment概述 141
8.2 Fragment的生命周期 141
8.3 Fragment使用 142
8.4 将Fragment加入Activity中 143
8.5 使用Fragment举例 144
8.6 本章小结 146
习题8 147
第9章 Java并发编程 148
9.1 Java线程池简介 148
9.2 Executor与ExecutorService 149
9.3 ThreadPoolExecutor 153
9.4 Future模式 157
9.5 项目实战——“3G商城”(二) 161
9.5.1 任务说明 161
9.5.2 项目讲解 161
9.5.3 典型代码及技术要点 163
9.6 本章小结 173
习题9 173
第二部分 提 高 篇
第10章 百度地图开发 176
10.1 Android地图SDK 176
10.1.1 概述 176
10.1.2 申请密钥 176
10.1.3 SimpleMapDemo 180
10.1.4 基础地图 183
10.1.5 事件监听 183
10.2 Android定位SDK 187
10.3 Android导航SDK 187
10.4 项目实战——“开发百度地图” 187
10.4.1 任务说明 187
10.4.2 项目讲解 187
10.4.3 典型代码及技术要点 190
10.5 本章小结 196
习题10 196
第11章 ViewPager和PageAdapter 198
11.1 ViewPager和PageAdapter 198
11.2 FragmentPageAdapter实现仿
QQ界面 200
11.3 仿网易新闻客户端Tab标签实现 205
11.4 本章小结 208
习题11 208
第12章 PostgreSQL 9 209
12.1 PostgreSQL简介 209
12.2 PostgreSQL 9的安装与配置 209
12.2.1 安装 209
12.2.2 使用pgAdmin III连接
PostgreSQL 209
12.3 数据库的基本操作 210
12.3.1 创建数据库 210
12.3.2 修改数据库 211
12.3.3 删除数据库 211
12.4 数据表的基本操作 211
12.4.1 创建数据表 211
12.4.2 修改数据表 212
12.4.3 删除数据表 212
12.5 插入、更新与删除数据 212
12.5.1 插入 212
12.5.2 更新 213
12.5.3 删除 214
12.6 数据查询 214
12.6.1 查询语句 214
12.6.2 单表查询 215
12.6.3 集合函数查询 217
12.6.4 连接查询 218
12.6.5 子查询 219
12.6.6 正则表达式查询 220
12.6.7 别名 221
12.7 综合练习 221
12.7.1 任务说明 221
12.7.2 具体实现 221
12.8 相关阅读材料:数据备份
与还原 224
12.9 本章小结 225
习题12 225
第三部分 开 发 篇
第13章 在手机客户端解析JSON 228
13.1 JSON简介 228
13.2 服务器端生成JSON数据 228
13.3 在手机客户端解析JSON 231
13.4 项目实战——“3G商城”(三) 233
13.4.1 任务说明 233
13.4.2 项目讲解 233
13.4.3 典型代码及技术要点 235
13.5 本章小结 239
习题13 239
第14章 消息推送 240
14.1 Android消息推送机制 240
14.1.1 推送方式基础 240
14.1.2 消息推送实现原理 240
14.2 Android平台的消息推送实现 241
14.2.1 Push在Android平台上
长连接的实现 241
14.2.2 使用Androidpn实现消
息推送 242
14.3 项目实战——“Android客
户端实现推送” 246
14.3.1 任务说明 246
14.3.2 项目讲解 246
14.3.3 典型代码及技术要点 249
14.4 相关阅读材料 262
14.4.1 几种常见的消息推送解决
方案 262
14.4.2 Androidpn所存在的一些
问题 263
14.5 本章小结 264
习题14 264
第15章 Android账户管理 265
15.1 账户管理相关类 265
15.2 使用OAuth 2.0来进行鉴定 267
15.3 应用程序如何将一个账号注册到
系统中 270
15.4 创建自定义账户示例 273
15.5 本章小结 275
习题15 275
第16章 MyBatis框架原理 276
16.1 MyBatis框架简介 276
16.2 从JDBC到MyBatis 277
16.3 使用MyBatis进行一次简单
的SQL查询 278
16.3.1 准备工作 278
16.3.2 主要步骤 279
16.3.3 小结 282
16.4 配置文件说明 282
16.4.1 主配置文件 282
16.4.2 接口文件 285
16.4.3 SQL映射文件 286
16.4.4 动态SQL 288
16.5 MyBatis应用 290
16.5.1 数据的增、删、改、查 290
16.5.2 关联数据的查询 292
16.5.3 分页数据的查询 295
16.5.4 与Spring3集成 296
16.5.5 与Spring MVC集成 299
16.6 本章小结 301
习题16 301
第17章 Maven和Gradle 303
17.1 初识Maven 303
17.2 Maven的安装和配置 305
17.3 Maven使用 308
17.4 坐标和依赖 310
17.5 构建支持Servlet 3.0的Maven Web
应用 311
17.6 Gradle来了 314
17.7 本章小结 315
习题17 316
第18章 服务器端接口编程 317
18.1 JNDI数据源配置 317
18.2 Log4J与SLF4J 320
18.3 项目实战——“3G商城”(四) 324
18.3.1 任务说明 324
18.3.2 项目讲解 324
18.3.3 典型代码及技术要点 325
18.4 MyBatis VS Hibernate 329
18.5 相关阅读材料:Flexjson 334
18.6 本章小结 335
习题18 335
第四部分 拓 展 篇
第19章 即时通信 338
19.1 XMPP协议 338
19.2 openfire 341
19.2.1 openfire简介 341
19.2.2 openfire安装与配置 341
19.3 Smack简介 343
19.4 项目实战——“实现即时通信” 347
19.4.1 登录openfire服务器 347
19.4.2 获取好友列表 350
19.4.3 客户端接收服务器发送的
消息 352
19.4.4 初步实现两个客户端通信 354
19.5 相关阅读材料 359
19.5.1 将openfire源代码导入
Eclipse 359
19.5.2 openfire插件开发 364
19.6 本章小结 367
习题19 367
第20章 友盟统计及社会化组件 368
20.1 友盟应用统计分析 368
20.1.1 集成准备 368
20.1.2 友盟统计分析示例 368
20.2 友盟社会化分享组件 372
20.3 本章小结 373
习题20 373
第21章 Android客户端程序架构 374
21.1 概述 374
21.2 项目实战——“掌上苏大” 374
21.2.1 任务说明 375
21.2.2 整体框架和运行主界面 375
21.2.3 Android全局对象
Application 376
21.2.4 整个应用的线程终止异常
处理 377
21.2.5 程序执行主要流程 378
21.2.6 推送的实现 381
21.2.7 整个应用的后台服务和广播
接收机制 382
21.2.8 使用友盟第三方平台对用户
行为进行分析 384
21.2.9 Android系统账户实现 385
21.2.10 其他 385
21.3 本章小结 385
习题21 385
第22章 Java设计模式 386
22.1 设计模式(Design Pattern)的分类
和设计原则 386
22.1.1 设计模式的分类 386
22.1.2 设计原则 386
22.2 创建模式(CreationalPattern) 387
22.2.1 工厂方法模式(Factory Method)和抽象工厂模式(Abstract
Factory) 387
22.2.2 单例模式(Singleton) 388
22.2.3 建造者模式(Builder) 388
22.2.4 原型模式(Prototype) 388
22.3 结构模式(StructuralPattern) 389
22.3.1 适配器模式(Adapter)和装饰
模式(Decorator) 389
22.3.2 代理模式(Proxy)和外
观模式(Fa?ade) 390
22.3.3 桥接模式(Bridge)和组
合模式(Composite) 390
22.3.4 享元模式(Flyweight) 391
22.4 行为模式(BehavioralPattern) 391
22.4.1 策略模式(Strategy)和模板方法模式(TemplateMethod) 391
22.4.2 观察者模式(Observer)、迭代器模式(Iterator)、责任链模式
(Chain of Responsibility)和命
令模式(Command) 392
22.4.3 备忘录模式(Memento)和状态
模式(State) 392
22.4.4 访问者模式(Visitor)、中介者模式(Mediator)和解释器模式
(Interpreter) 393
22.5 本章小结 394
习题22 394
第23章 版本控制工具——SVN
和Git 396
23.1 版本控制基础知识 396
23.2 SVN 396
23.2.1 SVN服务端 396
23.2.2 SVN客户端 397
23.2.3 Android Studio中使用SVN 398
23.3 Git和GitHub 398
23.3.1 Git安装 398
23.3.2 远程仓库 399
23.3.3 分支管理 400
23.3.4 使用GitHub 401
23.3.5 Android Studio中使用Git 401
23.4 比较SVN和Git 401
23.5 本章小结 402
习题23 402
附录A Eclipse中编码问题
(包括ADT) 403
附录B Eclipse自动部署项目到
Tomcat的webapps目录 405
附录C ADB命令 408
参考文献 409
展开
前 言
“北冥有鱼,其名为鲲,鲲之大,不知其几千里也。化而为鸟,其名为鹏,鹏之背,不知其几千里也;怒而飞,其翼若垂天之云……天之苍苍,其正色邪?其远而无所至极邪?其视下也,亦若是则已矣。”
移动互联网时代,Android为王。移动设备的市场份额中Android排名第一,应用的下载次数达到近600亿,每天有近几十万台的Android设备售出。
移动计算带来的社会巨变史无前例。苹果以其天才的创新,使得iPhone在全球迅速有了数百万名忠实“粉丝”,而Android作为第一个完整、开放、免费的手机平台,使开发者在为其开发程序时拥有更大的自由。
由于Android发展迅速,导致了就业市场对Android开发人员的需求量猛增。然而更多企业需要的是拥有实践经验的开发人员,同时高校Android教学相关书籍也非常缺乏。
本书的编者参与了多个Android商业项目的开发,并将商业项目进行精简,成为高校教学更易用的实训项目,以达到培养高校学生提升Android开发实践能力的目的。
本教材的特色之一是“行动体系的课程”向“学科体系课程”的渗透。从“学习情境”(问题情景)的假设,到自己动手解决问题,应该说是更多地带有“行动体系课程”的特点。在思维层次上,由“感性认识”到“理性认识”的认知方式更容易让学生接受。(“行动体系的课程”提出源于德国高等教育领域,主张学生在行动中思考、学习、总结,再上升为经验(理论)。)
本书的另一特色是项目课程设计。“项目课程”可追溯到17世纪和18世纪,最早出现在意大利罗马的建筑师学院,现已成为一种有着深厚理论基础的课程模式。但实际往往是,源于企业的项目过大,无法遵照学习规律,因此需要重新按从易到难的顺序设计项目系列。只有对实际项目进行压缩、简化,而又具备一定程度的综合性、针对性和复杂性,才能使学生获得真实化、综合化的职业能力。现在公开出版的众多Android书籍中,所涉及的Android项目案例与真实的商业项目还是有相当大的区别的。
本教材的特色之三是实训项目来源于真实的商业项目。
本教材的特色之四是配套教学资源丰富。
本书编者根据自身实际参与的真实商业项目,经过精简和提炼,精心编写了2个教学案例:“3G商城”和“掌上苏大”。本书主要以这两个项目的教学贯穿整个课程教学的始末。为了教学方便,其间也穿插有其他小的项目,例如“开发百度地图”、“Android客户端实现推送”、“实现即时通信”、“课程表”等。实际上,这些小项目都可作为模块,集成到“掌上苏大”项目中。
需要说明的是,本书的定位是卓越工程师培养创新教材。不仅面向在校学生,而且面向广大Android程序员、技术人员和培训机构等。
编者也衷心希望广大高校学生,通过精心阅读和认真学习本书内容,能够在一定程度上提高自身的就业能力。
给授课教师的教学建议
如下表所示,标注“*”号的章节可作为可选章节。如果要针对高校学生实施教学,正常教学课时可安排在48~82课时之间,根据具体情况,可灵活安排。
具体章节 建议课时 是否可选章节 可选章节
建议课时
第1章 开发环境搭建和程序开发基础 2
第2章 用户界面设计 6
第3章 组件通信 2
第4章 后台服务与广播消息 4
第5章 数据存储与访问 4
第6章 Android网络应用 4
第7章 图形图像处理 2
第8章 Fragment 2
第9章 Java并发编程 6
第10章 百度地图开发 4
第11章 ViewPager和PageAdapter 2
*第12章 PostgreSQL 9 可选 6
第13章 在手机客户端解析JSON 4
第14章 消息推送 4
*第15章 Android账户管理 可选 2
*第16章 MyBatis框架原理 可选 6
第17章 Maven和Gradle 2
*第18章 服务器端接口编程 可选 4
*第19章 即时通信 可选 4
*第20章 友盟统计及社会化组件 可选 2
*第21章 Android客户端程序架构 可选 4
*第22章 Java设计模式 可选 4
*第23章 版本控制工具——SVN和Git 可选 2
合计 48 34
给读者的学习建议
若要成为高水平的Android程序员,编者给出的建议如下:
(1)首先将Java语言基础打牢。可以认真研读《SCJP考试指南(考试号310-065)》(电子工业出版社)一书,把书上的题目尽可能都做一遍。
(2)认真把本书的第9章Java并发编程搞清楚。因为Android客户端编程一般都是并 发的。
(3)限于篇幅,本书对Java设计模式并未展开详尽的阐述,推荐《设计模式之禅(第2版)》,通过该书比较深入地学习Java设计模式。同时多翻看项目源码,但脑子里要琢磨设计模式。
(4)多看开源代码。本书的第14章消息推送和第19章即时通信都涉及开源代码。实际上,一些开源代码比商业软件代码更复杂。
(5)在编程水平得到一定提高的基础上,可学习Android系统源代码。为更清楚、透彻地理解Java的自动内存管理机制,可对Java虚拟机规范加以研究。
祝您早日成为Android编程高手!
编者分工与致谢
本书由韩冬负责拟定提纲和统稿,并编写了第1章、第4章、第8~11章、第13~15章、第17章、第19~22章,魏慧编写了第2~3章、第5~6章、第18章,胡沁涵编写了第7章、第12章和第16章,张建编写了第23章,贾俊铖负责编写附录部分。苏州大学计算机学院学生崔益欣、李昕、徐磊、任伟荣、朱锐、倪剑飞、王敦文、朱灿、李家强、崔盼盼、徐旺、夏鸣等协助负责该书稿的PPT、源代码、习题解答和教学视频的建设,书稿中及程序中用到的图片多由崔益欣同学提供。在这里向他们表示衷心的感谢!
本书提供了丰富的网络教学资源包,包含所有章节的PPT、程序源码、习题解答、教学视频、所需软件工具及一个帮助学习本书的手机APP。读者可在华信教育资源网进行下载,地址为:http://www.hxedu.com.cn/。
鉴于作者水平有限,书中难免存在不足和错误之处,恳望读者提出宝贵意见和建议,以便再版时改进。
韩冬
2015年9月
展开