第1篇 新手入门 2
第1章 走进Android 2
1.1 认识Android 3
1.1.1 Android的体系结构 3
1.1.2 Android的特性 5
1.1.3 Android的版本 5
1.1.4 Android市场 6
1.2 搭建Android的开发环境 6
1.2.1 系统需求 6
1.2.2 JDK的下载 7
1.2.3 JDK的安装与配置 8
1.2.4 Android SDK的下载与安装 10
1.2.5 Eclipse的下载与安装 15
1.2.6 Eclipse的汉化 17
1.2.7 ADT插件的下载与安装 18
1.3 开发第一个Android程序 20
1.3.1 了解Android应用程序的开发流程 20
1.3.2 创建Android应用程序 21
1.3.3 创建AVD模拟器 23
1.3.4 运行Android程序 25
1.3.5 调试Android应用程序 25
1.4 实战 26
1.4.1 使用ADT Bundle搭建开发环境 26
1.4.2 创建平板电脑式的模拟器 27
1.5 本章小结 28
1.6 学习成果检验 28
第2章 Android模拟器 29
2.1 模拟器概述 30
2.1.1 Android虚拟设备和模拟器 30
2.1.2 模拟器限制 31
2.1.3 控制模拟器的按键 31
2.2 创建和删除Android模拟器 32
2.2.1 创建并启动Android模拟器 32
2.2.2 删除Android模拟器 33
2.3 Android模拟器基本设置 33
2.3.1 设置语言 33
2.3.2 设置输入法 35
2.3.3 设置日期时间 35
2.4 在Android模拟器上安装和卸载程序 37
2.4.1 使用adb命令安装和卸载Android程序 37
2.4.2 通过DDMS管理器安装Android程序 39
2.4.3 在Android模拟器中卸载程序 40
2.5 实战 41
2.5.1 设置模拟器桌面背景 41
2.5.2 使用模拟器拨打电话 42
2.5.3 设置使用24小时格式的时间 42
2.6 本章小结 43
2.7 学习成果检验 43
第3章 用户界面设计 44
3.1 控制UI界面 45
3.1.1 使用XML布局文件控制UI界面 45
3.1.2 在Java代码中控制UI界面 47
3.1.3 使用XML和Java代码混合控制UI界面 49
3.1.4 开发自定义的View 50
3.2 布局管理器 52
3.2.1 线性布局管理器 53
3.2.2 表格布局管理器 55
3.2.3 帧布局管理器 57
3.2.4 相对布局管理器 59
3.3 实战 62
3.3.1 简易的图片浏览器 62
3.3.2 应用相对布局显示软件更新提示 63
3.3.3 使用表格布局与线性布局实现分类工具栏 64
3.3.4 开发自定义的View在窗体上绘制一只地鼠 68
3.4 本章小结 69
3.5 学习成果检验 69
第4章 Android常用组件 70
4.1 文本类组件 71
4.1.1 文本框 71
4.1.2 编辑框 73
4.1.3 自动完成文本框 76
4.2 按钮类组件 78
4.2.1 普通按钮 78
4.2.2 图片按钮 80
4.2.3 单选按钮 82
4.2.4 复选框 85
4.3 日期、时间类组件 87
4.3.1 日期、时间选择器 87
4.3.2 计时器 89
4.4 进度条类组件 90
4.4.1 进度条 91
4.4.2 拖动条 93
4.4.3 星级评分条 95
4.5 列表类组件 97
4.5.1 列表选择框 97
4.5.2 列表视图 99
4.6 图像类组件 103
4.6.1 图像视图 103
4.6.2 网格视图 105
4.6.3 图像切换器 108
4.6.4 画廊视图 111
4.7 其他组件 114
4.7.1 滚动视图 114
4.7.2 选项卡 116
4.8 实战 118
4.8.1 实现我同意游戏条款 118
4.8.2 显示在标题上的进度条 121
4.8.3 实现带图标的ListView列表 123
4.8.4 实现仿Windows 7图片预览窗格效果 124
4.9 本章小结 127
4.10 学习成果检验 127
第5章 综合实验(一)——猜猜鸡蛋放在哪只鞋子里 128
5.1 概述 129
5.1.1 功能描述 129
5.1.2 系统流程 129
5.1.3 主界面预览 129
5.2 关键技术 130
5.3 实现过程 130
5.3.1 搭建开发环境 130
5.3.2 准备资源 131
5.3.3 布局页面 132
5.3.4 实现游戏规则代码 133
5.4 运行项目 135
5.5 本章小结 136
第2篇 进阶提高 138
第6章 基本程序单元Activity 138
6.1 Activity概述 139
6.1.1 Activity的4种状态 139
6.1.2 Activity的生命周期 140
6.1.3 Activity的属性 141
6.2 创建、启动和关闭Activity 142
6.2.1 创建Activity 142
6.2.2 配置Activity 144
6.2.3 启动和关闭Activity 145
6.3 多个Activity的使用 146
6.3.1 使用Bundle在Activity之间交换数据 146
6.3.2 调用另一个Activity并返回结果 154
6.4 使用Fragment 156
6.4.1 创建Fragment 156
6.4.2 在Activity中添加Fragment 156
6.5 实战 162
6.5.1 应用对话框主题的关于Activity 162
6.5.2 根据输入的生日判断星座 163
6.5.3 带选择头像的用户注册界面 167
6.5.4 仿QQ客户端登录界面 170
6.5.5 带查看原图功能的图像浏览器 173
6.6 本章小结 176
6.7 学习成果检验 176
第7章 Intent和BroadcastReceiver的应用 177
7.1 Intent对象简介 178
7.1.1 Intent对象概述 178
7.1.2 3种不同的Intent传输机制 178
7.2 Intent对象的组成 179
7.2.1 组件名称 179
7.2.2 动作 180
7.2.3 数据 182
7.2.4 种类 184
7.2.5 附加信息 186
7.2.6 标志 189
7.3 解析Intent对象 191
7.3.1 Intent过滤器 191
7.3.2 通用情况 193
7.3.3 使用Intent匹配 194
7.4 BroadcastReceiver使用 194
7.4.1 了解BroadcastReceiver 194
7.4.2 应用BroadcastReceiver 195
7.5 实战 197
7.5.1 使用Intent实现发送短信 197
7.5.2 使用包含预定义动作的隐式Intent 199
7.5.3 使用包含自定义动作的隐式Intent 201
7.5.4 使用BroadcastReceiver查看电池剩余电量 204
7.6 本章小结 205
7.7 学习成果检验 205
第8章 使用资源 206
8.1 字符串资源 207
8.1.1 定义字符串资源文件 207
8.1.2 使用字符串资源 207
8.2 颜色资源 209
8.2.1 颜色值的定义 209
8.2.2 定义颜色资源文件 209
8.2.3 使用颜色资源 210
8.3 尺寸资源 211
8.3.1 Android支持的尺寸单位 211
8.3.2 定义尺寸资源文件 212
8.3.3 使用尺寸资源 212
8.4 数组资源 215
8.4.1 定义数组资源文件 215
8.4.2 使用数组资源 216
8.5 Drawable资源 216
8.5.1 图片资源 217
8.5.2 StateListDrawable资源 219
8.6 使用布局资源 222
8.7 样式和主题资源 223
8.7.1 样式资源 223
8.7.2 主题资源 224
8.8 使用原始XML资源 227
8.9 使用菜单资源 228
8.9.1 定义菜单资源文件 228
8.9.2 使用菜单资源 230
8.10 Android程序国际化 234
8.11 实战 235
8.11.1 通过字符串资源显示游戏对白 235
8.11.2 使用数组资源和ListView显示联系人列表 236
8.11.3 实现自定义复选框的样式 237
8.11.4 创建一组只能单选的选项菜单 238
8.11.5 实现国际化的上下文菜单 240
8.12 本章小结 242
8.13 学习成果检验 242
第9章 Android事件处理 243
9.1 事件处理概述 244
9.2 处理键盘事件 244
9.3 处理触摸事件 246
9.4 手势的创建与识别 247
9.4.1 手势的创建 247
9.4.2 手势的导出 248
9.4.3 手势的识别 249
9.5 实战 250
9.5.1 提示音量增加事件 250
9.5.2 使用手势输入数字 251
9.5.3 查看手势对应的分值 252
9.6 本章小结 254
9.7 学习成果检验 254
第10章 对话框、通知与闹钟 255
10.1 通过Toast显示消息提示框 256
10.2 使用AlertDialog实现对话框 257
10.3 使用Notification在状态栏上显示通知 262
10.4 使用AlarmManager设置闹钟 264
10.4.1 AlarmManager简介 265
10.4.2 设置一个简单的闹钟 265
10.5 实战 268
10.5.1 弹出询问是否退出的对话框 268
10.5.2 弹出带图标的列表对话框 269
10.5.3 仿手机QQ登录状态显示功能 270
10.6 本章小结 273
10.7 学习成果检验 273
第11章 Action Bar 274
11.1 Action Bar概述 275
11.2 Action Bar的使用 275
11.2.1 添加Action Bar 275
11.2.2 移除Action Bar 276
11.2.3 添加Action Item选项 277
11.2.4 Action Bar显示选项 279
11.2.5 Action Bar与Tab 281
11.2.6 添加Action View 285
11.2.7 添加Action Provider 287
11.3 实战 289
11.3.1 禁止Action Bar的使用 289
11.3.2 显示自定义视图 290
11.3.3 重新设置icon图标 291
11.3.4 不同的选项卡显示不同时区的时间 292
11.4 本章小结 294
11.5 学习成果检验 294
第12章 Android程序的调试 295
12.1 输出日志信息的几种方法 296
12.1.1 Log.d方法——输出故障日志 296
12.1.2 Log.e方法——输出错误日志 297
12.1.3 Log.i方法——输出程序日志 298
12.1.4 Log.v方法——输出冗余日志 299
12.1.5 Log.w方法——输出警告日志 300
12.2 Android程序调试 301
12.3 程序异常处理 302
12.3.1 Android程序出现异常怎么办 302
12.3.2 如何捕捉Android程序异常 303
12.3.3 抛出异常的两种方法 304
12.3.4 何时使用异常处理 306
12.4 实战 306
12.4.1 向LogCat视图中输出程序Info日志 306
12.4.2 使用throw关键字在方法中抛出异常 307
12.5 本章小结 308
12.6 学习成果检验 308
第13章 综合实验(二)——迷途奔跑的野猪 309
13.1 功能概述 310
13.2 关键技术 310
13.3 实现过程 310
13.3.1 搭建开发环境 311
13.3.2 准备资源 311
13.3.3 布局页面 311
13.3.4 实现代码 312
13.4 运行项目 314
13.5 本章小结 314
第3篇 中级开发 316
第14章 数据存储技术 316
14.1 使用SharedPreferences对象存储数据 317
14.2 使用Files对象存储数据 324
14.2.1 openFileOutput()和openFileInput()方法 324
14.2.2 对Android模拟器中的sD卡进行操作 327
14.3 Android数据库编程——SQLite 328
14.4 实战 332
14.4.1 遍历Android模拟器的SD卡 332
14.4.2 将图片复制到SD卡上 333
14.4.3 判断获得的SD卡内容是否是文件夹 335
14.4.4 在SQLite数据库中批量添加数据 336
14.4.5 使用列表显示数据表中全部数据 338
14.5 本章小结 339
14.6 学习成果检验 339
第15章 Content Provider实现数据共享 340
15.1 Content Provider概述 341
15.1.1 数据模型 341
15.1.2 URI的用法 341
15.2 预定义Content Provider 342
15.2.1 查询数据 343
15.2.2 增加记录 343
15.2.3 增加新值 344
15.2.4 批量更新记录 344
15.2.5 删除记录 344
15.3 自定义Content Provider 344
15.3.1 继承ContentProvider类 345
15.3.2 声明Content Provider 346
15.4 实战 347
15.4.1 系统内置联系人的使用 347
15.4.2 查询联系人ID和姓名 347
15.4.3 查询联系人姓名和电话 348
15.4.4 自动补全联系人姓名 350
15.5 本章小结 352
15.6 学习成果检验 352
第16章 线程与消息处理 353
16.1 多线程的常见操作 354
16.1.1 创建线程 354
16.1.2 开启线程 356
16.1.3 线程的休眠 356
16.1.4 中断线程 357
16.2 Handler消息传递机制 357
16.2.1 循环者Looper类 358
16.2.2 消息处理类Handler 359
16.2.3 消息类Message 360
16.3 实战 361
16.3.1 开启一个新线程播放背景音乐 361
16.3.2 开启新线程获取网络图片并显示到ImageView中 362
16.3.3 开启新线程实现电子广告牌 364
16.3.4 多彩的霓虹灯 366
16.3.5 在屏幕上来回移动的气球 368
16.4 本章小结 370
16.5 学习成果检验 370
第17章 Service应用 371
17.1 Service概述 372
17.1.1 Service的分类 372
17.1.2 Service类中重要方法 372
17.1.3 Service的声明 373
17.2 创建Started Service 374
17.2.1 继承IntentService类 375
17.2.2 继承Service类 376
17.2.3 启动服务 377
17.2.4 停止服务 378
17.3 创建Bound Service 378
17.3.1 继承Binder类 379
17.3.2 使用Messenger类 381
17.3.3 绑定到服务 383
17.4 管理Service的生命周期 383
17.5 实战 384
17.5.1 继承IntentService输出当前时间 384
17.5.2 继承Service输出当前时间 385
17.5.3 继承Binder类绑定服务显示时间 387
17.5.4 使用Messenger类绑定服务显示时间 390
17.5.5 视力保护程序 392
17.5.6 查看当前运行服务信息 394
17.6 本章小结 396
17.7 学习成果检验 396
第18章 综合实验(三)——简易打地鼠游戏 397
18.1 功能概述 398
18.2 关键技术 398
18.3 实现过程 399
18.3.1 搭建开发环境 399
18.3.2 准备资源 399
18.3.3 布局页面 400
18.3.4 实现代码 400
18.4 运行项目 401
18.5 本章小结 402
第4篇 高级应用 404
第19章 图像与动画处理技术 404
19.1 常用绘图类 405
19.1.1 Paint类 405
19.1.2 Canvas类 406
19.1.3 Bitmap类 408
19.1.4 BitmapFactory类 408
19.2 绘制2D图像 409
19.2.1 绘制几何图形 409
19.2.2 绘制文本 411
19.2.3 绘制路径 413
19.2.4 绘制图片 415
19.3 为图形添加特效 417
19.3.1 旋转图像 417
19.3.2 缩放图像 419
19.3.3 倾斜图像 420
19.3.4 平移图像 421
19.3.5 使用BitmapShader渲染图像 422
19.4 Android中的动画 423
19.4.1 实现逐帧动画 424
19.4.2 实现补间动画 424
19.4.3 Android动画的应用 428
19.5 实战 431
19.5.1 绘制Android的机器人 431
19.5.2 实现带描边的圆角图片 432
19.5.3 实现放大镜效果 432
19.5.4 在GridView中显示SD卡上的全部图片 434
19.5.5 忐忑的精灵 436
19.6 本章小结 438
19.7 学习成果检验 438
第20章 利用OpenGL实现3D图形 439
20.1 OpenGL简介 440
20.2 绘制3D图形 440
20.2.1 构建3D开发的基本框架 440
20.2.2 绘制一个模型 442
20.3 添加效果 446
20.3.1 应用纹理贴图 447
20.3.2 旋转 448
20.3.3 光照效果 449
20.3.4 透明效果 450
20.4 实战 451
20.4.1 绘制一个三棱锥 451
20.4.2 为三棱锥添加旋转效果 453
20.4.3 绘制一个不断旋转的金字塔 455
20.4.4 使用Android机器人对立方体进行纹理贴图 457
20.5 本章小结 458
20.6 学习成果检验 458
第21章 多媒体技术 459
21.1 播放音频与视频 460
21.1.1 使用MediaPlayer播放音频 460
21.1.2 使用SoundPool播放音频 464
21.1.3 使用VideoView播放视频 467
21.1.4 使用MediaPlayer和SurfaceView播放视频 468
21.2 控制相机拍照 472
21.3 实战 476
21.3.1 播放SD卡上的全部音频文件 476
21.3.2 带音量控制的音乐播放器 480
21.3.3 为游戏界面添加背景音乐和按键音 482
21.3.4 制作开场动画 486
21.4 本章小结 487
21.5 学习成果检验 488
第22章 定位服务 489
22.1 定位基础 490
22.1.1 获得位置源 490
22.1.2 查看位置源属性 491
22.1.3 监听位置变化事件 493
22.2 谷歌地图服务 496
22.2.1 安装谷歌API插件 496
22.2.2 使用谷歌API的Android项目 497
22.2.3 使用谷歌API的Android虚拟设备 497
22.2.4 获得地图API密钥 497
22.3 实战 501
22.3.1 显示海拔信息 501
22.3.2 显示方向信息 502
22.3.3 在地图上标记天府广场的位置 502
22.4 本章小结 505
22.5 学习成果检验 505
第23章 网络通信技术 506
23.1 通过HTTP访问网络 507
23.1.1 使用HttpURLConnection访问网络 507
23.1.2 使用HttpClient访问网络 514
23.2 使用WebView显示网页 519
23.2.1 使用WebView组件浏览网页 520
23.2.2 使用WebView加载HTML代码 521
23.2.3 让WebView支持JavaScript 522
23.3 实战 524
23.3.1 从指定网站下载文件 524
23.3.2 访问需要登录后才能访问的页面 526
23.3.3 打造功能实用的网页浏览器 531
23.3.4 获取天气预报 534
23.4 本章小结 536
23.5 学习成果检验 536
第24章 综合实验(四)——简易涂鸦板 537
24.1 功能概述 538
24.2 关键技术 538
24.3 实现过程 539
24.3.1 搭建开发环境 539
24.3.2 布局页面 539
24.3.3 实现代码 540
24.4 运行项目 544
24.5 本章小结 544
第5篇 项目实战 546
第25章 基于Android的数独游戏 546
25.1 需求分析 547
25.2 程序开发及运行环境 547
25.3 程序文件夹组织结构 547
25.4 公共资源文件 548
25.4.1 字符串资源文件 548
25.4.2 数组资源文件 548
25.4.3 颜色资源文件 549
25.5 游戏主窗体设计 549
25.5.1 设计系统主窗体布局文件 549
25.5.2 为界面中的按钮添加监听事件 551
25.5.3 绘制数独游戏界面 553
25.5.4 数独游戏的实现算法 557
25.6 虚拟键盘模块设计 562
25.6.1 设计模拟键盘布局文件 562
25.6.2 在虚拟键盘中显示可以输入的数字 563
25.7 游戏设置模块设计 565
25.7.1 设计游戏设置布局文件 565
25.7.2 设置是否播放背景音乐和显示提示 566
25.7.3 控制背景音乐的播放与停止 566
25.8 关于模块设计 567
25.8.1 设计关于窗体布局文件 567
25.8.2 显示关于信息 567
25.9 将程序安装到Android手机上 568
25.10 本章小结 568
第26章 基于Android的家庭理财通 569
26.1 需求分析 570
26.2 系统设计 570
26.2.1 系统目标 570
26.2.2 系统功能结构 570
26.2.3 系统业务流程图 570
26.2.4 系统编码规范 571
26.3 系统开发及运行环境 572
26.4 数据库与数据表设计 573
26.4.1 数据库分析 573
26.4.2 创建数据库 573
26.4.3 创建数据表 574
26.5 系统文件夹组织结构 575
26.6 公共类设计 575
26.6.1 数据模型公共类 575
26.6.2 Dao公共类 577
26.7 登录模块设计 582
26.7.1 设计登录布局文件 582
26.7.2 登录功能的实现 583
26.7.3 退出登录窗口 584
26.8 系统主窗体设计 584
26.8.1 设计系统主窗体布局文件 584
26.8.2 显示各功能窗口 585
26.8.3 定义文本及图片组件 587
26.8.4 定义功能图标及说明文字 587
26.8.5 设置功能图标及说明文字 588
26.9 收入管理模块设计 589
26.9.1 设计新增收入布局文件 589
26.9.2 设置收入时间 592
26.9.3 添加收入信息 594
26.9.4 重置新增收入窗口中的各个控件 594
26.9.5 设计收入信息浏览布局文件 595
26.9.6 显示所有的收入信息 596
26.9.7 单击指定项时打开详细信息 597
26.9.8 设计修改/删除收入布局文件 597
26.9.9 显示指定编号的收入信息 601
26.9.10 修改收入信息 602
26.9.11 删除收入信息 603
26.10 便签管理模块设计 603
26.10.1 设计新增便签布局文件 603
26.10.2 添加便签信息 605
26.10.3 清空“便签”文本框 606
26.10.4 设计便签信息浏览布局文件 606
26.10.5 显示所有的便签信息 608
26.10.6 单击指定项时打开详细信息 609
26.10.7 设计修改/删除便签布局文件 610
26.10.8 显示指定编号的便签信息 612
26.10.9 修改便签信息 612
26.10.10 删除便签信息 612
26.11 系统设置模块设计 613
26.11.1 设计系统设置布局文件 613
26.11.2 设置登录密码 614
26.11.3 重置“密码”文本框 615
26.12 将程序安装到Android手机上 615
26.13 开发常见问题与解决 616
26.13.1 程序在装有Android系统的手机上无法运行 616
26.13.2 无法将最新修改在Android模拟器中体现 616
26.13.3 退出系统后还能使用记录的密码登录 616
26.14 本章小结 616