第1章 布局和视图 1
1.1 样式化常见组件 1
1.1.1 问题 1
1.1.1 解决方案 1
1.1.3 实现机制 2
1.2 切换系统UI元素 10
1.2.1 问题 10
1.2.2 解决方案 10
1.2.3 实现机制 11
1.3 创建并显示视图 14
1.3.1 问题 14
1.3.2 解决方案 14
1.3.3 实现机制 14
1.4 动画视图 20
1.4.1 问题 20
1.4.2 解决方案 21
1.4.3 实现机制 21
1.5 布局变化时的动画 26
1.5.1 问题 26
1.5.2 解决方案 26
1.5.3 实现机制 27
1.6 实现针对具体场景的布局 30
1.6.1 问题 30
1.6.2 解决方案 30
1.6.3 实现机制 30
1.7 自定义AdapterView的空视图 38
1.7.1 问题 38
1.7.2 解决方案 38
1.7.3 实现机制 38
1.8 自定义ListView中的行 40
1.8.1 问题 40
1.8.2 解决方案 40
1.8.3 实现机制 40
1.9 制作ListView的节头部 44
1.9.1 问题 44
1.9.2 解决方案 44
1.9.3 实现机制 44
1.10 创建组合控件 52
1.10.1 问题 52
1.10.2 解决方案 52
1.10.3 实现机制 52
1.11 自定义过渡动画 56
1.11.1 问题 56
1.11.2 解决方案 56
1.11.3 实现机制 56
1.12 创建视图变换 65
1.12.1 问题 65
1.12.2 解决方案 65
1.12.3 实现机制 65
1.13 建立可扩展的集合视图 71
1.13.1 问题 71
1.13.2 解决方案 72
1.13.3 实现机制 72
1.14 小结 82
第2章 用户交互 83
2.1 利用Action Bar 83
2.1.1 问题 83
2.1.2 解决方案 83
2.1.3 实现机制 84
2.2 锁定Activity方向 91
2.2.1 问题 91
2.2.2 解决方案 91
2.2.3 实现机制 91
2.3 动态方向锁定 92
2.3.1 问题 92
2.3.2 解决方案 92
2.3.3 实现机制 92
2.4 手动处理旋转 94
2.4.1 问题 94
2.4.2 解决方案 94
2.4.3 实现机制 95
2.5 创建上下文动作 98
2.5.1 问题 98
2.5.2 解决方案 98
2.5.3 实现机制 98
2.6 显示一个用户对话框 103
2.6.1 问题 103
2.6.2 解决方案 103
2.6.3 实现机制 103
2.7 自定义菜单和动作 108
2.7.1 问题 108
2.7.2 解决方案 108
2.7.3 实现机制 109
2.8 自定义BACK按键 114
2.8.1 问题 114
2.8.2 解决方案 114
2.8.3 实现机制 114
2.9 模拟HOME按键 117
2.9.1 问题 117
2.9.2 解决方案 117
2.9.3 实现机制 118
2.10 监控TextView的变动 118
2.10.1 问题 118
2.10.2 解决方案 118
2.10.3 实现机制 119
2.11 自定义键盘动作 121
2.11.1 问题 121
2.11.2 解决方案 121
2.11.3 实现机制 121
2.12 消除软键盘 124
2.12.1 问题 124
2.12.2 解决方案 124
2.12.3 实现机制 124
2.13 处理复杂的触摸事件 125
2.13.1 问题 125
2.13.2 解决方案 125
2.13.3 实现机制 126
2.14 转发触摸事件 142
2.14.1 问题 142
2.14.2 解决方案 142
2.14.3 实现机制 142
2.15 阻止触摸窃贼 146
2.15.1 问题 146
2.15.2 解决方案 146
2.15.3 实现机制 146
2.16 创建拖放视图 149
2.16.1 问题 149
2.16.2 解决方案 150
2.16.3 实现机制 151
2.17 构建导航Drawer 157
2.17.1 问题 157
2.17.2 解决方案 157
2.17.3 实现机制 157
2.18 在视图之间滑动 167
2.18.1 问题 167
2.18.2 解决方案 167
2.18.3 实现机制 168
2.19 使用选项卡导航 177
2.19.1 问题 177
2.19.2 解决方案 177
2.19.3 实现机制 178
2.20 小结 185
第3章 通信和联网 187
3.1 显示Web信息 187
3.1.1 问题 187
3.1.2 解决方案 187
3.1.3 实现机制 187
3.2 拦截WebView事件 192
3.2.1 问题 192
3.2.2 解决方案 192
3.2.3 实现机制 192
3.3 访问带JavaScript的WebView 193
3.3.1 问题 193
3.3.2 解决方案 194
3.3.3 实现机制 194
3.4 下载图片文件 196
3.4.1 问题 196
3.4.2 解决方案 197
3.4.3 实现机制 197
3.5 完全在后台下载 200
3.5.1 问题 200
3.5.2 解决方案 200
3.5.3 实现机制 200
3.6 访问REST API 203
3.6.1 问题 203
3.6.2 解决方案 204
3.6.3 实现机制 204
3.7 解析JSON 222
3.7.1 问题 222
3.7.2 解决方案 222
3.7.3 实现机制 222
3.8 解析XML 225
3.8.1 问题 225
3.8.2 解决方案 225
3.8.3 实现机制 226
3.9 接收短信 235
3.9.1 问题 235
3.9.2 解决方案 235
3.9.3 实现机制 236
3.1 0发送短信 238
3.1 0.1 问题 238
3.1 0.2 解决方案 238
3.1 0.3 实现机制 239
3.1 1 蓝牙通信 241
3.1 1.1 问题 241
3.1 1.2 解决方案 241
3.1 1.3 实现机制 241
3.1 2查询网络连接状态 250
3.1 2.1 问题 250
3.1 2.2 解决方案 250
3.1 2.3 实现机制 250
3.1 3使用NFC传输数据 253
3.1 3.1 问题 253
3.1 3.2 解决方案 253
3.1 3.3 实现机制 253
3.1 4 USB连接 260
3.1 4.1 问题 260
3.1 4.2 解决方案 261
3.1 4.3 实现机制 261
3.1 5 小结 270
第4章 实现设备硬件交互与媒体交互 271
4.1 整合设备位置 271
4.1.1 问题 271
4.1.2 解决方案 271
4.1.3 实现机制 272
4.2 地图位置 277
4.2.1 问题 277
4.2.2 解决方案 277
4.2.3 实现机制 280
4.3 在地图上标记位置 285
4.3.1 问题 285
4.3.2 解决方案 285
4.3.3 实现机制 286
4.4 监控位置地区 301
4.4.1 问题 301
4.4.2 解决方案 301
4.4.3 实现机制 302
4.5 拍摄照片和视频 311
4.5.1 问题 311
4.5.2 解决方案 311
4.5.3 实现机制 311
4.6 自定义摄像头覆盖层 316
4.6.1 问题 316
4.6.2 解决方案 316
4.6.3 实现机制 317
4.7 录制音频 323
4.7.1 问题 323
4.7.2 解决方案 323
4.7.3 实现机制 323
4.8 自定义视频采集 325
4.8.1 问题 325
4.8.2 解决方案 325
4.8.3 实现机制 326
4.9 添加语音识别 330
4.9.1 问题 330
4.9.2 解决方案 330
4.9.3 实现机制 330
4.10 播放音频/视频 332
4.10.1 问题 332
4.10.2 解决方案 332
4.10.3 实现机制 332
4.11 播放音效 341
4.11.1 问题 341
4.11.2 解决方案 341
4.11.3 实现机制 341
4.12 创建倾斜监控器 344
4.12.1 问题 344
4.12.2 解决方案 344
4.12.3 实现机制 344
4.13 监控罗盘的方向 347
4.13.1 问题 347
4.13.2 解决方案 348
4.13.3 实现机制 348
4.14 从媒体内容中获取元数据 351
4.14.1 问题 351
4.14.2 解决方案 351
4.14.3 实现机制 352
4.15 检测用户移动 355
4.15.1 问题 355
4.15.2 解决方案 355
4.15.3 实现机制 356
4.16 小结 366
第5章 数据持久化 367
5.1 制作首选项界面 367
5.1.1 问题 367
5.1.2 解决方案 367
5.1.3 实现机制 367
5.2 显示自定义首选项 373
5.2.1 问题 373
5.2.2 解决方案 373
5.2.3 实现机制 374
5.3 简单数据存储 378
5.3.1 问题 378
5.3.2 解决方案 379
5.3.3 实现机制 379
5.4 读写文件 383
5.4.1 问题 383
5.4.2 解决方案 383
5.4.3 实现机制 383
5.5 以资源的形式使用文件 390
5.5.1 问题 390
5.5.2 解决方案 390
5.5.3 实现机制 391
5.6 管理数据库 393
5.6.1 问题 393
5.6.2 解决方案 393
5.6.3 实现机制 393
5.7 查询数据库 398
5.7.1 问题 398
5.7.2 解决方案 398
5.7.3 实现机制 399
5.8 备份数据 400
5.8.1 问题 400
5.8.2 解决方案 400
5.8.3 实现机制 400
5.9 分享数据库 405
5.9.1 问题 405
5.9.2 解决方案 405
5.9.3 实现机制 405
5.10 分享SharedPreference 412
5.10.1 问题 412
5.10.2 解决方案 412
5.10.3 实现机制 412
5.11 分享其他数据 421
5.11.1 问题 421
5.11.2 解决方案 421
5.11.3 实现机制 422
5.12 集成系统文档 428
5.12.1 问题 428
5.12.2 解决方案 428
5.12.3 实现机制 429
5.13 小结 442
第6章 与系统交互 443
6.1 后台通知 443
6.1.1 问题 443
6.1.2 解决方案 443
6.1.3 实现机制 443
6.2 创建定时和周期任务 459
6.2.1 问题 459
6.2.2 解决方案 460
6.2.3 实现机制 460
6.3 定时执行周期任务 461
6.3.1 问题 461
6.3.2 解决方案 461
6.3.3 实现机制 462
6.4 创建粘性操作 469
6.4.1 问题 469
6.4.2 解决方案 469
6.4.3 实现机制 470
6.5 长时间运行的后台操作 474
6.5.1 问题 474
6.5.2 解决方案 474
6.5.3 实现机制 475
6.6 启动其他应用程序 480
6.6.1 问题 480
6.6.2 解决方案 480
6.6.3 实现机制 481
6.7 启动系统应用程序 484
6.7.1 问题 484
6.7.2 解决方案 484
6.7.3 实现机制 485
6.8 让其他应用程序启动你的应用程序 489
6.8.1 问题 489
6.8.2 解决方案 489
6.8.3 实现机制 489
6.9 与联系人交互 491
6.9.1 问题 491
6.9.2 解决方案 491
6.9.3 实现机制 492
6.10 读取设备媒体和文档 500
6.10.1 问题 500
6.10.2 解决方案 500
6.10.3 实现机制 500
6.11 保存设备媒体和文档 504
6.11.1 问题 504
6.11.2 解决方案 504
6.11.3 实现机制 504
6.12 读取消息数据 509
6.12.1 问题 509
6.12.2 解决方案 509
6.12.3 实现机制 510
6.13 与日历交互 521
6.13.1 问题 521
6.13.2 解决方案 521
6.13.3 实现机制 521
6.14 执行日志代码 527
6.14.1 问题 527
6.14.2 解决方案 528
6.14.3 实现机制 528
6.15 创建后台工作线程 530
6.15.1 问题 530
6.15.2 解决方案 530
6.15.3 实现机制 530
6.16 自定义任务栈 535
6.16.1 问题 535
6.16.2 解决方案 535
6.16.3 实现机制 535
6.17 实现AppWidget 543
6.17.1 问题 543
6.17.2 解决方案 543
6.17.3 实现机制 544
6.18 支持受限制的配置文件 564
6.18.1 问题 564
6.18.2 解决方案 564
6.18.3 实现机制 565
6.19 小结 577
第7章 图形和绘图 579
7.1 用Drawable做背景 579
7.1.1 问题 579
7.1.2 解决方案 579
7.1.3 实现机制 580
7.2 创建自定义状态的Drawable 586
7.2.1 问题 586
7.2.2 解决方案 586
7.2.3 实现机制 586
7.3 将遮罩应用于图片 591
7.3.1 问题 591
7.3.2 解决方案 591
7.3.3 实现机制 592
7.4 在视图内容上绘制 601
7.4.1 问题 601
7.4.2 解决方案 601
7.4.3 实现机制 601
7.5 高性能绘制 617
7.5.1 问题 617
7.5.2 解决方案 617
7.5.3 实现机制 617
7.6 提取图片调色板 628
7.6.1 问题 628
7.6.2 解决方案 628
7.6.3 实现机制 629
7.7 平铺Drawable元素 633
7.7.1 问题 633
7.7.2 解决方案 633
7.7.3 实现机制 634
7.8 使用可缩放的向量资源 639
7.8.1 问题 639
7.8.2 解决方案 639
7.8.3 实现机制 639
7.9 小结 648
第8章 使用Android NDK和RenderScript 649
8.1 Android NDK 649
8.2 使用JNI添加原生位 651
8.2.1 问题 651
8.2.2 解决方案 651
8.2.3 实现机制 652
8.3 构建纯原生Activity 660
8.3.1 问题 660
8.3.2 解决方案 660
8.3.3 实现机制 660
8.4 RenderScript 670
8.5 使用RenderScript过滤图片 671
8.5.1 问题 671
8.5.2 解决方案 672
8.5.3 实现机制 672
8.6 使用RenderScript操作图片 677
8.6.1 问题 677
8.6.2 解决方案 677
8.6.3 实现机制 677
8.7 使用模糊滤镜仿造透明覆盖层 683
8.7.1 问题 683
8.7.2 解决方案 683
8.7.3 实现机制 683
8.8 小结 693