第一部分Android平台概览 2
第1章Android简介 2
1.1移动软件开发简史 2
1.1.1遥想当年 2
1.1.2“砖头” 3
1.1.3无线应用协议(WAP) 4
1.1.4专用移动平台 6
1.2开放手机联盟(OHA) 7
1.2.1无线Google 7
1.2.2成立开放手机联盟 8
1.2.3制造商:设计Android手机 8
1.2.4移动运营商:传播Android体验 9
1.2.5应用程序推动的设备销售:开发Android应用程序 10
1.2.6充分发挥Android的优势 10
1.2.7 Android市场:我们的定位 10
1.3 Android平台的不同之处 11
1.3.1 Android:下一代平台 11
1.3.2免费开放源代码 12
1.3.3熟悉和廉价的开发工具 12
1.3.4合理的开发人员学习曲线 12
1.3.5强大的应用程序开发支持 13
1.3.6丰富、安全的应用集成 13
1.3.7无障碍发布 13
1.3.8为应用程序提供的“自由市场” 13
1.3.9新生并逐渐成长的平台 15
1.4 Android平台 15
1.4.1 Android的基本体系结构 15
1.4.2安全与许可权限 17
1.4.3开发Android应用程序 18
小结 20
参考资料和更多信息 20
第2章 搭建你的Android开发环境 21
2.1配置你的开发环境 21
2.1.1配置操作系统以适应设备调试 22
2.1.2配置Android硬件以供调试 23
2.1.3升级Android SDK 24
2.1.4 Android软件开发包的问题 24
2.2探索Android SDK 25
2.2.1理解Android SDK许可协议 25
2.2.2阅读Android SDK文档 26
2.2.3探索Android应用程序核心框架 27
2.2.4了解Android核心工具 28
2.2.5探索Android示例应用程序 31
小结 32
参考资料和更多信息 32
第3章 编写第一个Android应用程序 33
3.1测试你的开发环境 33
3.1.1在Eclipse工程中导入Snake应用程序 33
3.1.2为Snake工程创建Android虚拟设备(AVD) 35
3.1.3为Snake工程创建运行配置参数 36
3.1.4在Android模拟器中运行Snake应用程序 37
3.2构建你的第一个Android应用程序 39
3.2.1创建和配置新的Android工程 39
3.2.2 Android应用程序的核心文件和目录 41
3.2.3为新工程创建Android虚拟设备 42
3.2.4为工程配置运行参数 42
3.2.5在模拟器中运行Android应用程序 43
3.2.6在模拟器中调试Android应用程序 44
3.2.7为Android应用程序添加日志记录 46
3.2.8为应用程序添加媒体支持 48
3.2.9为应用程序添加位置服务(LBS) 49
3.2.10在硬件上调试应用程序 50
小结 52
参考资料和更多信息 52
第4章 掌握Android开发工具 53
4.1使用Android文档 53
4.2使用Android模拟器 55
4.3使用LogCat查看应用程序日志数据 55
4.4使用DDMS调试应用程序 56
4.5使用Android调试桥(ADB) 56
4.6使用资源编辑器和UI设计器 57
4.7使用Android层级浏览器 59
4.7.1运行层级浏览器 59
4.7.2使用布局浏览模式 60
4.7.3优化用户界面 61
4.7.4使用精细像素模式 61
4.8使用九格拉伸图像 62
4.9使用其他Android工具 64
小结 65
参考资料和更多信息 65
第二部分Android应用程序设计基础 68
第5章 剖析Android应用程序 68
5.1掌握重要的Android术语 68
5.2 使用应用程序Context 69
5.2.1获取应用程序Context 69
5.2.2使用应用程序Context 69
5.2.3获取应用程序资源 70
5.2.4访问应用程序首选项 70
5.2.5访问应用程序文件和目录 70
5.2.6获取应用程序组件 70
5.3使用Activity执行应用程序任务 70
5.3.1 Android Activity的生命周期 71
5.3.2使用Activity回调管理应用程序状态和资源 71
5.4使用Fragment组织Activity组件 74
5.5使用Intent管理Activity跳转 76
5.5.1使用Intent实现Activity之间的跳转 76
5.5.2使用Activity和Intent组织应用程序导航 78
5.6使用服务 79
5.7接收和广播Intent 80
小结 80
参考资料和更多信息 80
第6章 使用Android Manifest文件定义应用程序 82
6.1使用Android Manifest件配置Android应用程序 82
6.2管理你的应用程序标识 86
6.2.1为你的应用程序指定版本 86
6.2.2给你的应用程序加上名称和图标 87
6.3强制指定应用程序的系统需求 87
6.3.1针对特定SDK版本 87
6.3.2强制指定应用程序平台需求 89
6.3.3使用外部库 91
6.3.4其他应用程序配置及筛选器 91
6.4在Android Manifest文件中注册Activity 92
6.4.1使用Intent过滤器为应用程序指派主入口点Activity 92
6.4.2配置其他Intent滤器 92
6.4.3注册其他应用程序组件 93
6.5使用许可权限 93
6.5.1注册应用程序所需的许可权限 94
6.5.2注册应用程序强制要求的许可权限 94
6.6探索Manifest文件的其他设置 95
小结 95
参考资料和更多信息 96
第7章 管理应用程序资源 97
7.1什么是资源 97
7.1.1存储应用程序资源 97
7.1.2资源的类型 98
7.1.3使用程序访问资源 101
7.2使用Eclipse设置简单资源 101
7.3使用不同种类的资源 104
7.3.1使用String(字符串)资源 104
7.3.2使用格式化的字符串资源 104
7.3.3使用字符串数组 106
7.3.4使用Boolean(布尔)资源 107
7.3.5使用Integer(整型)资源 107
7.3.6使用颜色 108
7.3.7使用尺寸 108
7.3.8使用简单Drawable资源 109
7.3.9使用图像 110
7.3.10使用动画 112
7.3.11使用菜单 114
7.3.12使用XML文件 115
7.3.13使用原始文件 116
7.3.14资源引用 116
7.3.15使用布局(Layout) 117
7.4引用系统资源 121
小结 122
参考资料和更多信息 122
第三部分Android用户界面设计精髓 124
第8章 探索用户界面屏幕元素 124
8.1 Android视图和布局简介 124
8.1.1 Android视图简介 124
8.1.2 Android控件简介 124
8.1.3 Android布局简介 125
8.2 使用TextView显示文本 125
8.2.1配置布局和尺寸 126
8.2.2在文本中创建上下文链接 127
8.3使用EditText获取用户数据 128
8.3.1使用EditText控件获取用户输入文本 128
8.3.2使用输入过滤器约束用户输入 129
8.4使用自动补全辅助用户 130
8.5使用Spinner控件为用户提供可选输入 131
8.6使用按钮、多选框和单选组完成简单的用户选择 132
8.6.1使用基本按钮 133
8.6.2使用BheckBox和ToggleButton控件 134
8.6.3使用RadioGroup和Radio Button 135
8.7获取用户输入的日期和时间 137
8.8使用指示器向用户显示数据 139
8.8.1使用ProgressBar指示进度 139
8.8.2使用SeekBar调整进度 140
8.8.3使用RatingBar显示评分数据 141
8.8.4使用Chronometer显示时间推移 142
8.8.5显示时间 142
小结 143
参考资料和更多信息 143
第9章 使用布局设计用户界面 145
9.1创建Android用户界面 145
9.1.1使用XML资源创建布局 145
9.1.2使用代码创建布局 146
9.2组织用户界面 148
9.2.1为布局设计使用ViewGroup子类 149
9.2.2将ViewGroup子类作为视图容器 149
9.3使用内建的布局类 149
9.3.1使用FrameLayout 151
9.3.2使用LinearLayout 152
9.3.3使用RelativeLayout 153
9.3.4使用TableLayout 155
9.3.5使用GridLayout 157
9.3.6在屏幕上使用多布局 159
9.4使用容器控件类 160
9.4.1使用数据驱动容器 160
9.4.2使用标签组织视图 164
9.4.3添加滚动支持 166
9.4.4探索其他视图容器 167
小结 167
参考资料和更多信息 167
第10章 使用Fragment 169
10.1理解Fragment 169
10.1.1理解Fragment生命周期 170
10.1.2使用特化的Fragment 172
10.1.3设计基于Fragment的应用程序 173
10.2使用Android支持包 180
10.2.1为旧版应用程序添加Android Fragment支持 180
10.2.2在新应用程序中针对旧版平台使用Fragment 181
10.2.3在项目中链接Android支持包 181
小结 182
参考资料和更多信息 182
第11章 使用对话框 183
11.1选择一种方式实现对话框 183
11.2探索不同类型的对话框 184
11.3使用对话框:以前的方法 185
11.4使用对话框:Fragment方法 187
小结 190
参考资料和更多信息 190
第四部分Android应用程序设计精髓 192
第12章 使用Android首选项 192
12.1使用应用程序首选项 192
12.1.1正确地使用首选项 192
12.1.2存储不同类型的首选项值 192
12.1.3创建私有和共享首选项 193
12.1.4创建可供多个Activity使用的共享首选项 193
12.1.5搜索和读取首选项 193
12.1.6新增、修改和删除首选项 194
12.1.7处理首选项变更 195
12.1.8使用Android文件系统查找首选项数据 195
12.2创建可管理的用户首选项 196
12.2.1创建首选项资源文件 196
12.2.2使用PreferenceActivity类 198
小结 200
参考资料和更多信息 200
第13章 使用文件和目录 201
13.1使用设备应用程序数据 201
13.2练习良好的文件管理 202
13.3理解Android文件许可权限 202
13.4使用文件和目录 203
13.4.1探索Android应用程序目录 203
13.4.2使用Android文件系统操作其他目录和文件 206
小结 208
参考资料和更多信息 208
第14章 使用内容提供器 209
14.1探索Android内容提供器 209
14.1.1使用MediaStore内容提供器 210
14.1.2使用CallLog内容提供器 211
14.1.3使用浏览器(Browser)内容提供器 213
14.1.4使用CalenderContract内容提供器 214
14.1.5使用UserDictionary(用户词典)内容提供器 214
14.1.6使用VoicemailContract内容提供器 214
14.1.7使用Settings内容提供器 214
14.1.8使用联系簿(Contacts)内容提供器 214
14.2修改内容提供器的数据 218
14.2.1添加记录 218
14.2.2修改记录 219
14.2.3删除记录 220
14.3使用第三方内容提供器 220
小结 221
参考资料和更多信息 221
第15章 设计高兼容性应用程序 222
15.1最大化应用程序兼容性 222
15.2为兼容性设计用户界面 224
15.2.1使用Fragment 225
15.2.2使用Android支持包 225
15.2.3支持特定屏幕类型 225
15.2.4使用九格拉伸图像 226
15.2.5使用Working Square原理 226
15.3提供应用程序替代资源 227
15.3.1理解资源的解析(Resolve)方式 227
15.3.2使用替代资源标识符 227
15.3.3提供用于不同屏幕方向的资源 231
15.3.4在程序中使用替代资源 232
15.3.5高效地组织应用程序资源 232
15.4面向平板电脑、电视和其他新设备 232
15.4.1面向平板设备 233
15.4.2面向Google电视设备 233
小结 234
参考资料和更多信息 235
第五部分 对外发布你的Android应用程序 238
第16章 移动软件开发过程 238
16.1移动开发过程概览 238
16.2选择一种软件开发方法 238
16.2.1理解“瀑布模型”的危险 239
16.2.2认识迭代式开发的价值 239
16.3整合应用程序需求 239
16.3.1确定工程需求 239
16.3.2为移动应用程序开发用例 241
16.3.3吸纳第三方需求 241
16.3.4管理设备数据库 242
16.4项目风险评估 244
16.4.1确定目标设备 244
16.4.2获取目标设备 245
16.4.3确定应用程序需求的可行性 246
16.4.4理解质量保障的风险 246
16.5编写基本项目文档 247
16.5.1为质量保障制定测试计划 248
16.5.2提供第三方所需的文档 248
16.5.3提供维护和移植所需的文档 248
16.6使用配置管理系统 248
16.6.1选择一个源代码控制系统 248
16.6.2实现一个可用的版本管理系统 249
16.7设计移动应用程序 249
16.7.1认识移动设备的局限 249
16.7.2移动应用程序体系结构探索 249
16.7.3可扩展和维护设计 250
16.7.4应用程序交互设计 251
16.8开发移动应用程序 251
16.9测试移动应用程序 252
16.10.发布移动应用程序 252
16.11支持和维护移动应用程序 253
16.11.1跟踪和定位用户产生的“崩溃”报告 253
16.11.2测试固件升级 253
16.11.3维护适当的应用程序文档 253
16.11.4管理服务器的动态更改 253
16.11.5确定低风险移植机会 253
小结 254
参考资料和更多信息 254
第17章 设计和开发“防弹”Android应用程序 255
17.1“防弹”移动应用程序设计最佳实践 255
17.1.1满足移动用户的需求 255
17.1.2为移动设备设计用户界面 256
17.1.3设计稳定、灵敏的移动应用程序 257
17.1.4设计安全的移动应用程序 258
17.1.5在设计移动应用程序时考虑利益的最大化 258
17.1.6在Android应用程序设计时使用第三方标准 259
17.1.7设计便于维护和升级的移动应用程序 259
17.1.8在应用程序设计中使用Andriod工具 261
17.1.9避免设计时的愚蠢错误 261
17.2“防弹”移动应用程序开发最佳实践 261
17.2.1设计有效的移动开发过程 262
17.2.2提早和经常地测试应用程序可行性 262
17.2.3使用代码标准、代码检查和单元测试以提高代码质量 262
17.2.4处理某单一设备的缺陷 264
17.2.5在应用程序开发中使用Android工具 265
17.2.6避免开发时的愚蠢错误 265
小结 265
参考资料和更多信息 265
第18章 测试Android应用程序 267
18.1设计一个应用程序漏洞跟踪系统 267
18.2管理测试环境 268
18.3尽量全面地进行测试 270
18.4在应用程序测试中使用Android工具 276
18.5避免测试时的愚蠢错误 276
小结 277
参考资料和更多信息 277
第19章 发布你的Android应用程序 278
19.1选择合适的发布模式 278
19.1.1保护你的知识产权 279
19.1.2向用户收费 279
19.2为发布而打包你的应用程序 280
19.2.1准备封装你的代码 280
19.2.2为你的应用程序打包并签名 282
19.2.3测试软件包的发布版本 284
19.2.4发布你的应用程序 284
19.3在Android Market上发布你的应用程序 284
19.3.1在Android Market上注册一个开发人员账号 284
19.3.2将你的应用程序上传至Android Market 286
19.3.3上传应用程序市场资源 287
19.3.4配置应用程序详情页面 287
19.3.5配置应用程序发布选项 288
19.3.6配置应用程序联系信息和知情通知 288
19.3.7将你的应用程序发布至Android Market 290
19.3.8在Android Market上管理你的应用程序 290
19.4通过其他途径发布应用程序 291
19.5通过自主渠道发布应用程序 291
小结 292
参考资料和更多信息 292
第六部分 附录 294
附录A Android模拟器快速入门 294
A.1模拟器的目的:虚拟现实 294
A.2使用Android虚拟设备(AVD) 295
A.2.1使用Android SDK和AVD管理器 296
A.2.2创建AVD 297
A.3使用指定AVD启动模拟器 300
A.3.1维持模拟器高效运行 300
A.3.2配置模拟器启动项 301
A.3.3启动模拟器运行应用程序 301
A.3.4从Android SDK和AVD管理器中启动模拟器 303
A.4配置模拟器的GPS位置信息 303
A.5在两个模拟器实例之间拨打电话 304
A.6在两个模拟器实例之间发送消息 305
A.7通过控制台与模拟器交互 306
A.7.1使用控制台模拟来电 306
A.7.2使用控制台模拟短消息 307
A.7.3使用控制台发送GPS坐标 308
A.7.4使用控制台监视网络状态 308
A.7.5使用控制台操作电源设置 308
A.7.6使用其他控制台命令 309
A.8享受模拟器 309
A.9认识模拟器的局限 309
参考资料和更多信息 310
附录B Android DDMS快速入门 311
B.1独立或结合Eclipse使用DDMS 311
B.2熟悉DDMS的关键特性 312
B.3使用进程、线程和堆 313
B.3.1向Android应用程序关联调试器 313
B.3.2终止Android进程 313
B.3.3监视Android应用程序的线程活动 313
B.3.4监视堆活动 314
B.3.5触发垃圾回收(GC) 315
B.3.6创建和使用HPROF文件 315
B.4使用内存分配(allocation)跟踪器 316
B.5使用文件浏览器 317
B.5.1浏览模拟器或设备上的文件系统 318
B.5.2从模拟器或设备上复制文件 319
B.5.3向模拟器或设备复制文件 319
B.5.4删除模拟器或设备上的文件 319
B.6使用模拟器控制 320
B.6.1模拟语音来电 320
B.6.2模拟短消息接收 320
B.6.3发送位置坐标 320
B.7在模拟器或目标设备上截屏 320
B.8使用应用程序日志 321
附录C Eclipse技巧和诀窍 323
C.1构建你的Eclipse工作空间 323
C.1.1集成源代码管理服务 323
C.1.2调整视图中的标签面板 323
C.1.3最大化窗口 324
C.1.4最小化窗口 324
C.1.5显示并排窗口 324
C.1.6显示同一文件的两个部分 324
C.1.7关掉不需要的标签面板 324
C.1.8保持对窗口的控制 325
C.1.9定制日志过滤器 325
C.1.10在项目中搜索 325
C.1.11组织Eclipse任务 325
C.2编写Java代码 326
C.2.1善用自动补全(Autocomplete) 326
C.2.2创建类和方法 326
C.2.3组织导入 326
C.2.4格式化代码 327
C.2.5重命名 327
C.2.6重构代码 327
C.2.7整理代码 328
C.2.8使用QuickFix 329
C.2.9提供Javadoc风格的文件 329
C.2.10解决诡异的构建错误 329