基 础篇 3
第1章Android操作系统概述 3
1.1 Android历史介绍 3
1.2 Android架构 3
1.3 Android平台介绍 5
第2章Android开发环境搭建 7
2.1 JDK安装与配置 7
2.2 Android Studio开发工具 9
2.3 Android SDK工具包 12
2.4配置Android Studio 15
2.5 Android模拟器 16
2.5.1创建模拟器 16
2.5.2启动模拟器 21
本章总结 22
第3章 第一个Android应用程序 23
3.1使用Android Studio工具创建项目 23
3.2 Android工程剖析 27
3.2.1 Android工程目录结构 27
3.2.2 R.java文件 29
3.2.3 MainActivity.java文件 29
3.2.4 activity_main.xml布局文件 30
3.2.5 AndroidManifest.xml文件 30
3.3运行工程 32
3.4学会使用Android开发者社区帮助 33
3.4.1在线帮助文档 33
3.4.2离线帮助文档 33
3.4.3 Android SDK API文档 35
3.4.4 Android SDK开发指南 35
3.4.5使用Android SDK案例 35
本章总结 38
第4章 调试Android应用程序 39
4.1使用DDMS帮助调试程序 39
4.1.1设备列表 40
4.1.2文件浏览器 40
4.1.3 LogCat 41
4.2使用Android Studio调试 45
4.3使用ADB帮助调试程序 48
4.3.1查询模拟器实例和设备 48
4.3.2进入shell 48
4.3.3导入导出文件 49
本章总结 51
第5章Android界面编程 52
5.1 Android界面组成 52
5.1.1视图 52
5.1.2视图组 52
5.2界面构建 53
5.2.1使用Android Studio界面设计工具 53
5.2.2实例:标签和按钮 54
5.3事件处理模型 57
5.3.1活动作为事件监听器 57
5.3.2内部类事件监听器 59
5.3.3匿名内部类事件监听器 60
5.4屏幕上的事件处理 61
5.4.1触摸事件 61
5.4.2实例:屏幕触摸事件 62
5.4.3键盘事件 63
5.4.4实例:改变图片的透明度 63
本章总结 66
第6章Android界面布局 67
6.1 Android界面布局设计模式 67
6.1.1表单布局模式 67
6.1.2列表布局模式 68
6.1.3网格布局模式 68
6.2布局管理 69
6.2.1帧布局 69
6.2.2实例:使用帧布局 69
6.2.3线性布局 71
6.2.4实例:使用线性布局实现登录界面 71
6.2.5相对布局 74
6.2.6实例:使用相对布局实现查询功能界面 74
6.2.7网格布局 76
6.2.8实例1:使用网格布局实现计算器界面 77
6.2.9实例2:布局嵌套实现登录界面 79
6.3屏幕旋转问题 81
6.3.1解决方案 81
6.3.2实例:加载不同布局文件 82
本章总结 84
第7章Android简单控件 85
7.1按钮 85
7.1.1 Button 85
7.1.2 ImageButton 85
7.1.3 ToggleButton 86
7.1.4实例:ButtonSample 87
7.2标签 89
7.3文本框 89
7.3.1文本框相关属性 90
7.3.2实例1:用户登录 90
7.3.3实例2:文本框输入控制 92
7.4单选按钮 95
7.4.1 RadioButton 95
7.4.2 RadioGroup 96
7.4.3实例:使用单选按钮 96
7.5复选框 98
7.5.1 CheckBox 99
7.5.2实例:使用复选框 99
7.6进度栏 101
7.6.1进度栏相关属性和方法 101
7.6.2实例1:水平条状进度栏 103
7.6.3实例2:圆形进度栏 106
7.7拖动栏 108
7.7.1 SeekBar 109
7.7.2实例:使用拖动栏 109
本章总结 111
第8章Android高级控件 112
8.1列表类控件 112
8.1.1适配器 112
8.1.2 Spinner 113
8.1.3实例:使用Spinner进行选择 114
8.1.4 ListView 116
8.1.5实例1:使用ListView实现选择文本 116
8.1.6实例2:使用ListView实现选择文本+图片 118
8.2 Toast 122
8.2.1实例1:文本类型Toast 122
8.2.2实例2:图片类型Toast 123
8.2.3实例3:文本+图片Toast 124
8.3对话框 125
8.3.1实例1:显示文本信息对话框 126
8.3.2实例2:简单列表项对话框 128
8.3.3实例3:单选列表对话框 130
8.3.4实例4:复选列表项对话框 131
8.3.5实例5:复杂布局对话框 133
8.4操作栏和菜单 135
8.4.1操作栏 136
8.4.2菜单编程 136
8.4.3实例:文本菜单 137
8.4.4实例:操作表按钮 138
本章总结 140
第9章 活动 141
9.1活动概述 141
9.1.1创建活动 141
9.1.2活动的生命周期 142
9.1.3实例:Back和Home按钮的区别 144
9.2多活动之间跳转 146
9.2.1登录案例介绍 146
9.2.2启动下一个活动 148
9.2.3参数传递 149
9.2.4返回上一个活动 150
9.3活动任务与返回栈 152
本章总结 153
第10章 碎片 154
10.1界面重用问题 154
10.2碎片技术 155
10.3碎片的生命周期 155
10.3.1三种状态 155
10.3.2 11个方法 157
10.4使用碎片开发 157
10.4.1碎片相关类 157
10.4.2创建碎片 158
10.4.3静态添加碎片到活动 159
10.4.4动态添加碎片到活动 160
10.4.5管理碎片事务 161
10.4.6碎片与活动之间的通信 162
10.5案例:比赛项目 163
10.5.1创建两个碎片 164
10.5.2创建MainActivity活动 168
10.5.3单击Master碎片列表项 170
10.5.4数据访问对象 173
本章总结 174
第11章 意图 175
11.1什么是意图 175
11.1.1意图与目标组件间的通信 175
11.1.2意图包含内容 176
11.2意图类型 176
11.2.1显式意图 176
11.2.2隐式意图 177
11.3匹配组件 178
11.3.1动作 179
11.3.2数据 180
11.3.3类别 181
11.4实例:Android系统内置意图 183
本章总结 184
第12章 数据存储 185
12.1 Android数据存储概述 185
12.2健康助手应用 185
12.2.1需求分析 186
12.2.2原型设计 186
12.2.3 UI设计 186
12.2.4数据库设计 188
12.3本地文件 188
12.3.1沙箱目录设计 188
12.3.2访问应用程序files目录 189
12.3.3实例:访问CSV文件 190
12.4 SQLite数据库 193
12.4.1 SQLite数据类型 193
12.4.2 Android平台下管理SQLite数据库 193
12.5案例:SQLite实现健康助手数据存储 196
12.5.1 SQLiteOpenHelper帮助类 196
12.5.2数据插入 197
12.5.3数据删除 199
12.5.4数据修改 200
12.5.5数据查询 201
12.6使用Shared Preferences 203
12.6.1实例:写入SharedPreferences 203
12.6.2实例:读取SharedPreferences 205
本章总结 207
第13章 使用内容提供者共享数据 208
13.1内容提供者概述 208
13.2 Content URI 209
13.2.1 Content URI概述 210
13.2.2内置Content URI 210
13.3实例:访问联系人信息 211
13.3.1查询联系人 212
13.3.2普通权限和运行时权限 215
13.3.3通过联系人id查询联系人的Email 218
13.3.4查询联系人的电话 221
13.4实例:访问通话记录 222
13.5实例:访问短信记录 228
本章总结 232
进阶篇 235
第14章Android多线程开发 235
14.1线程概念 235
14.1.1进程概念 235
14.1.2线程概念 235
14.2计时器案例介绍 236
14.3 Java中的线程 237
14.3.1 Thread类实现线程体 238
14.3.2 Runnable接口实现线程体 240
14.3.3匿名内部类实现线程体 242
14.4 Android中的多线程 243
14.4.1主线程之外更新UI问题 243
14.4.2 Android异步消息处理机制 245
14.4.3 Handler发送消息方法 246
14.4.4计时器案例:异步消息机制实现 247
本章总结 249
第15章 服务 250
15.1服务概述 250
15.1.1创建服务 250
15.1.2服务的分类 252
15.2启动类型服务 252
15.2.1启动服务生命周期 252
15.2.2实例:启动类型服务 253
15.3绑定类型服务 255
15.3.1绑定服务生命周期 255
15.3.2实例:绑定类型服务 256
15.4 IntentService 258
15.4.1 IntentService优势 258
15.4.2实例:IntentService与Service比较 259
本章总结 261
第16章 广播接收器 262
16.1广播概述 262
16.2广播接收器概述 262
16.2.1编写广播接收器 263
16.2.2注册广播接收器 263
16.2.3实例:发送广播 265
16.3系统广播 267
16.3.1系统广播动作 267
16.3.2实例:Downloader 268
16.4本地广播 270
16.4.1本地广播API 271
16.4.2实例:发送本地广播 271
16.5通知 273
16.5.1实例:普通通知 273
16.5.2其他形式的Notification 276
本章总结 277
第17章 多媒体开发 278
17.1多媒体文件介绍 278
17.1.1音频多媒体文件介绍 278
17.1.2视频多媒体文件介绍 279
17.2 Android音频/视频播放API 280
17.2.1核心API—— MediaPlayer类 280
17.2.2播放状态 280
17.3实例:音频播放 282
17.3.1资源音频文件播放 282
17.3.2本地音频文件播放 286
17.4 Android音频/视频录制API 289
17.5实例:音频录制 290
17.6视频播放 293
17.6.1 VideoView控件 293
17.6.2实例:VideoView播放视频 294
本章总结 295
第18章 网络通信技术 296
18.1网络通信技术介绍 296
18.1.1 Socket通信 296
18.1.2 HTTP协议 296
18.1.3 HTTPS协议 297
18.1.4 Web服务 297
18.2案例:MyNotes 298
18.3发送网络请求 299
18.3.1使用j ava.Net.URL 299
18.3.2使用HttpURLConnection发送GET请求 303
18.3.3使用HttpURLConnection发送POST请求 304
18.3.4实例:Downloader 305
18.4数据交换格式 307
18.4.1 XML文档结构 309
18.4.2解析XML文档 310
18.4.3实例:DOM解析XML文档 311
18.4.4 JSON文档结构 316
18.4.5 JSON数据编码和解码 317
18.4.6实例:解码JOSN数据 319
本章总结 321
第19章 百度地图与定位服务 322
19.1使用百度地图 322
19.1.1申请API Key 322
19.1.2获得Android签名证书中的SHAT值 324
19.1.3搭建和配置环境 324
19.1.4实例:显示地图 328
19.1.5实例:设置地图状态 331
19.1.6实例:地图覆盖物 333
19.2定位服务 334
19.2.1定位服务授权 334
19.2.2位置信息提供者 337
19.2.3管理定位服务 338
19.2.4实例:MyLocation 339
19.2.5测试定位服务 341
19.3定位服务与地图结合实例:WhereAMI 345
本章总结 347
第20章Android 2D图形与动画技术 348
20.1 Android 2D绘图技术 348
20.1.1画布(Canvas)和画笔(Paint) 348
20.1.2实例:绘制点和线 349
20.1.3实例:绘制矩形 351
20.1.4实例:绘制弧线 352
20.1.5实例:绘制位图 353
20.2位图变换 355
20.2.1矩阵(Matrix) 355
20.2.2实例:位图变换 355
20.3调用Android照相机获取图片 357
20.3.1调用Android照相机 357
20.3.2实例:调用Android照相机 358
20.4 Android动画技术 360
20.4.1渐变动画 361
20.4.2实例:渐变动画 362
20.4.3动画插值器(interpolator) 365
20.4.4使用动画集(AnimationSet) 366
20.4.5帧动画 367
本章总结 369
第21章 手机功能开发 370
21.1电话应用开发 370
21.1.1拨打电话功能 370
21.1.2实例:拨打电话 371
21.1.3呼入电话状态 373
21.1.4实例:电话黑名单 374
21.2短信和彩信应用开发 378
21.2.1发送短信功能 378
21.2.2发送彩信功能 378
本章总结 379
实战篇 383
第22章 分层架构设计与重构健康助手应用 383
22.1分层架构设计 383
22.1.1低耦合企业级系统架构设计 383
22.1.2 Android平台分层架构设计 384
22.2健康助手应用架构设计 384
22.3重构健康助手数据持久层 386
22.3.1 DAO设计模式 386
22.3.2工厂设计模式 390
22.4表示层开发 392
22.4.1 Health列表界面 393
22.4.2 Health添加界面 398
22.4.3 Health修改界面 400
本章总结 402
第23章 内容提供者重构健康助手应用 403
23.1分层架构与内容提供者 403
23.2自定义内容提供者访问数据库 403
23.2.1编写内容提供者 404
23.2.2注册内容提供者 411
23.3重构健康助手数据持久层 411
本章总结 414
第24章Android敏捷开发项目实战——我的播放器应用开发 415
24.1应用分析与设计 415
24.1.1应用概述 415
24.1.2需求分析 415
24.1.3原型设计 415
24.1.4界面设计 416
24.1.5架构设计 418
24.2 Android敏捷开发 418
24.2.1敏捷开发宣言 418
24.2.2 Android可以敏捷开发 419
24.2.3 Android敏捷开发一般过程 419
24.3任务1:创建工程 420
24.4任务2:音频列表功能 420
24.4.1任务2.1:界面布局 420
24.4.2任务2.2: AudioListActivity 421
24.4.3任务2.3: AudioCursorAdapter 422
24.5任务3:音频控制功能 424
24.5.1任务3.1:界面布局 424
24.5.2任务3.2:初始化AudioPlayerActivity活动 426
24.5.3任务3.3:初始化AudioService服务 428
24.5.4任务3.4:播放控制 430
24.5.5任务3.5:进度控制 433
24.6任务4:后台播放回到前台功能 439
24.7任务5:更新专辑图片功能 441
本章总结 442
第25章 把应用发布到Google play应用商店 443
25.1谷歌Android应用商店Google play 443
25.2 Android设备测试 444
25.3还有“最后一公里” 445
25.3.1添加图标 445
25.3.2生成数字签名文件 445
25.3.3发布打包 446
25.4发布产品 448
25.4.1上传APK 449
25.4.2填写商品详细信息 450
25.4.3定价和发布范围 452
本章总结 454