第一部分 基础篇 2
第1章 开发环境搭建和程序开发基础 2
1.1 Android简介 2
1.1.1 Android传奇 2
1.1.2 Android体系结构 3
1.2 搭建Android应用开发环境 4
1.2.1 Android4.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
第二部分 提高篇 176
第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 PostgreSQL9的安装与配置 209
12.2.1 安装 209
12.2.2 使用pgAdmin Ⅲ连接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
第三部分 开发篇 228
第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
第四部分 拓展篇 338
第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 创建模式(Creational Pattern) 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 结构模式(Structural Pattern) 389
22.3.1 适配器模式(Adapter)和装饰模式(Decorator) 389
22.3.2 代理模式(Proxy)和外观模式(Facade) 390
22.3.3 桥接模式(Bridge)和组合模式(Composite) 390
22.3.4 享元模式(Flyweight) 391
22.4 行为模式(Behavioral Pattern) 391
22.4.1 策略模式(Strategy)和模板方法模式(Template Method) 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