第1章Android SDK与开发工具 1
01-01 Android应用程序基础知识 2
1-11应用程序的组件 3
1-1-2组件的启动 6
1-1-3组件的停止 7
01-02准备开发环境 7
1-2-1下载Java ( for Linux/ Windows) 7
1-2-2安装Java(for Windows) 9
1-2-3安装Java(for Linux ) 10
1-2-4下载Java (for Mac OS X ) 11
1-2-5安装Java(for Mac OS X) 13
1-2-6安装Android SDK(forWindows/Linux/Mac OS X) 14
1-2-7安装Eclipse与Android ADT plug in 16
01-03 Android项目结构与安装方法 25
1-3-1创建创业账本项目 25
1-3-2使用Eclipse项目向导新建项目 25
1-3-3 Android的项目结构 27
1-3-4使用AVD来新建一组模拟器 28
1-3-5在Eclipse调用模拟器并运行 31
1-3-6将手机设置为调试模式,并连接至开发主机 36
1-3-7使用Eclipse安装至实体设备 38
1-3-8使用Gmail安装应用程序 39
01-04使用AndroidManifest.xml记录重要信息 42
1-4-1应用程序的基本属性 43
1-4-2应用程序的详细设置 44
1-4-3应用程序的权限设置 45
1-4-4应用程序的效率测试 45
1-4-5更换应用程序包的名称(package) 45
小结 48
第2章 熟悉Eclipse的开发环境与使用技巧 49
02-01 Eclipse的基本设置 50
2-1-1 Workspace的创建 50
2-1-2 Workspace的首选设置 51
2-1-3切换Workspace 52
02-02项目的导出与导入 53
2-2-1导出项目 54
2-2-2导入项目 54
02-03 Eclipise与Android SDK的在线更新 55
02-04 取消Workspace默认值 57
02-05检查程序代码潜在的错误 58
2-5-1 Eclipse的程序代码检查 58
2-5-2使用Eclipse检查多余的程序代码 60
小结 61
第3章 初探Android程序设计 62
03-01使用XML来声明Layout 64
3-1-1 Linear Layout 64
3-1-2 RelativeLayout 77
3-1-3 FrameLayout 81
3-1-4 TableLayout 82
3-1-5修改项目界面 84
03-02 Activity的生命周期 85
03-03使用Intent来连接Activity 89
3-3-1在项目中显示用户输入界面 89
3-3-2新建Activity 89
3-3-3新建一个View 90
3-3-4将Activity加入Manifest 91
3-3-5加入Button并实现响应函数 92
3-3-6将数据传递进Intent 93
3-3-7将数据从Intent中提取 93
03-04手机状态改变时状态的传递 94
3-4-1手机放置状态改变的处理 94
3-4-2处理状态的改变 94
小结 95
第4章Android的调试与信息传送 97
04-01 adb(Android Debug Bridge)的使用 98
4-1-1列出连接的设备或模拟器实例 99
4-1-2指定设备并且安装/卸载应用程序 99
4-1-3启动和终止adb服务 100
4-1-4打印调试信息 100
4-1-5过滤调试信息 100
4-1-6设置调试信息的格式 101
04-02使用Log来调试 102
4-2-1在项目中利用Log类来调试 102
4-2-2在Eclipse中检查程序的调试信息 104
4-2-3在Eclipse中过滤多余的调试信息 106
04-03使用Toast来传递信息 108
4-3-1将Log的调试方式转换至Toast的调试方式 108
4-3-2 利用Toast提传递文字信息 110
4-3-3创建更多彩多姿的Toast内容 111
04-04使用状态栏传递信息 115
4-4-1新增一个服务 117
4-4-2新增一个返回的Activity 119
4-4-3在服务中调用状态栏的用户告知 120
4-4-4在主Activity中调用服务 122
4-4-5定制用户信息通知的版本 124
小结 126
第5章 使用Android的资源 127
05-01字符串的使用 128
5-1-1处理例外字符 130
5-1-2自定义字符串数组 131
5-1-3处理复数的字符串 134
5-1-4多语系的切换 138
5-1-5处理字符串的多语系支持 140
5-1-6多语系的常规 144
05-02颜色的使用 146
5-2-1更改项目中字体的颜色 149
5-2-2颜色组合的应用 149
05-03图片(Drawable )的使用 152
5-3-1访问点阵类图形与设置项目的背景图 152
5-3-2定义可扩展的PNG图片文件 153
5-3-3图形状态组合的应用 154
5-3-4用颜色作为Drawable 156
5-3-5用几何形状作为Drawable 158
05-04样式( Style)的使用 160
5-4-1定义一组新的样式 161
5-4-2样式的继承 163
05-05动画的使用 163
5-5-1逐格动画的使用 163
5-5-2在项目中添加淡出的渐变动画 164
5-5-3在项目中添加淡出且旋转的渐变动画 166
5-5-4利用转场动画让组件的隐藏呈现更流畅 168
小结 168
第6章 静态用户界面与控件 170
06-01创建“标签”式的页面配置 171
6-1-1创建个别的XML页面配置 172
6-1-2创建个别的Activity类 174
6-1-3在AndroidManifest.xml中注册Activity 176
6-1-4创建图形状态组合来作为标签 178
6-1-5修改页面配置,并设置为标签主控页面 179
6-1-6运行标签页面配置 181
6-1-7使用工作集(Working默认Set )来整理Package Explorer 183
06-02运用菜单与用户互动 186
6-2-1 Android的菜单种类 186
6-2-2创建菜单资源 188
6-2-3创建选项菜单 191
6-2-4创建变动的选项资源 194
6-2-5添加子菜单 197
6-2-6操作栏( Action Bar)的按钮图标 198
6-2-7响应菜单的输入 201
6-2-8创建上下文菜单 204
6-2-9创建组上下文菜单 206
6-2-10响应上下文菜单的输入 207
06-03响应用户界面的事件 210
6-3-1使用“事件监听器” 212
6-3-2运用监听按钮事件实现离开程序操作 212
06-04创建与用户互动的“对话框” 215
6-4-1在警告对话框中添加按钮 215
6-4-2在警告对话框中添加菜单的数据 217
6-4-3在警告对话框中添加单选按钮 218
6-4-4在警告对话框中添加多选按钮 218
6-4-5创建可显示“不定刻度进度”的对话框 220
6-4-6创建可显示“有刻度进度”的对话框 221
6-4-7创建“自定义页面”的对话框 222
小结 226
第7章动态用户界面与控件 227
07-01使用AdapterView来连接数据 228
7-1-1使用ListView来建立收入菜单 228
7-1-2在收入界面加入标题与结尾 232
7-1-3加入用户的响应 233
7-1-4在ListView上加入上下文菜单 235
7-1-5使用画廊页面来显示图片 237
7-1-6为图片管理页面中的图片加上边框 242
7-1-7创建图片管理页面的互动功能 244
7-1-8创建飞旋式选择器 247
7-1-9飞旋式选择器的回调函数 255
07-02使用系统的Intent 257
7-2-1在AndroidManifest中定义应用程序所需权限 258
7-2-2错误信息与权限设置 263
7-2-3使用系统的网页浏览功能 265
07-03窗口中的组件 266
7-3-1文字编辑区块 266
7-3-2自动完成的文字区块 273
7-3-3加入评分区块 274
小结 275
第8章更丰富的视觉互动组件 277
08-01 Fragment组件 278
8-1-1在画面中新增ListFragment 280
8-1-2在画面中新增自定义Fragment 283
8-1-3 Fragment之间的互动 287
8-1-4 Fragment与屏幕的旋转设置 289
8-1-5选择Fragment的响应函数 292
8-1-6保存Fragment的状态 297
08-02 Action Bar控制栏 300
8-2-1 Action Bar主题的设置与取消 301
8-2-2操作栏中的标签栏 302
8-2-3操作栏的样式 310
8-2-4下拉菜单 313
8-2-5分离式的操作栏 315
08-03复制与粘贴 319
8-3-1剪贴框架的类型 319
8-3-2剪贴框架和对象 320
8-3-3执行复制的应用程序 321
8-3-4实现粘贴的应用程序 324
小结 326
第9章 数据存取 327
09-01使用“数据提供程序”读写数据 328
9-1-1系统中的“联系人”数据提供程序 329
9-1-2操作“联系人”的Data类 330
9-1-3操作“联系人”的其他类,直接查询联系人和电话本 334
9-1-4整合至 AdapterView 337
9-1-5在数据提供程序中新增联系人 340
09-02使用SQL Lite读写数据 341
9-2-1认识关系型数据库 342
9-2-2新增辅助数据库的类 343
9-2-3使用数据定义语言 347
9-2-4在数据表格中添加数据 349
9-2-5用ListView来接收数据库查询的结果 354
9-2-6在数据表格中删除数据 358
9-2-7在数据表格中修改数据 363
小结 367
第10章 用户首选、文件访问和多线程 368
10-01通过用户首选访问文件 369
10-1-1将数据写入用户首选项 369
10-1-2查看用户首选文件 373
10-1-3将用户首选的数据读出 374
10-02使用PreferenceActivity 375
10-2-1在用户首选中创建选项菜单 382
10-2-2在用户首选中创建复选框 384
10-2-3将用户首选分类 386
10-03文件存储方式 388
10-3-1使用内部存储空间 388
10-3-2文件的持久性 390
10-3-3使用外部的存储空间 392
10-3-4访问外部存储空间的文件 393
10-3-5访问外部存储空间供媒体扫描器使用 396
10-3-6访问外部共享存储空间 398
10-04使用多线程解决ANR问题 399
10-4-1操作UI线程 400
10-4-2使用View的post()函数在不同线程中变更UI 404
10-4-3使用View的postDelayed()函数,以定时在不同线程中变更UI 405
10-4-4使用AsyncTask更新UI 406
10-4-5使用AsyncTask显示进度 408
10-4-6使用Content Loader 410
10-4-7结合List Fragment和Content Loader 415
小结 419
第11章 通信与网络 420
11-01短信的处理 421
11-1-1发送短信 421
11-1-2 监控短信的接收 423
11-02发送E-mail 429
11-03再次查看Web画面 432
11-3-1强化Eclipse的网页编辑上传功能 432
11-3-2在项目中添加一个WebView 436
11-3-3一次显示多个WebView 439
小结 440
第12章触控与动态桌面壁纸 441
12-01触控的事件 442
12-1-1实现触控监听器OnTouchListener 442
12-1-2加上速度侦测器VelocityTracker 445
12-1-3触控区域和多点触控 448
12-1-4创建手势数据库 450
12-1-5在程序中调用手势标识 453
12-02活动壁纸 456
12-2-1实现动态壁纸 456
12-2-2动态壁纸的属性设置 464
小结 466
第13章 桌面小工具与绘图 467
小结 483
第14章Android的硬件功能 484
14-01使用相机 485
14-1-1使用相机的组件 485
14-1-2 SurfaceView的运行周期 485
14-1-3相机的运行周期 486
14-1-4新增相机的项目与设置权限 487
14-1-5相机操作的用户界面 489
14-1-6添加SurfaceView与相机相关组件 490
14-1-7实现主程序逻辑 493
14-1-8模拟器的旋转与实机测试 496
14-02使用感应器 498
14-2-1取得感应器的列表 498
14-2-2取得感应器的数值 502
14-2-3使用光度感应器 502
14-2-4重力加速度与坐标系 504
14-2-5使用重力加速度感应器 505
小结 506
附录lint实战演练 507
01 Android与lint 508
02安装lint 508
03使用lint检查Android项目 509
04 lint所检查问题的类型与内容 511
05使用lint检查错误 512
5-1 MissingTranslation(多语系翻译未完整) 512
5-2 Proguard(proguard.cfg所出现的错误) 514
5-3 GridLayout(格点的索引值不正确) 515
06使用lint检查警告 517
6-1 AdapterViewChildren( AdapterView不该有子节点) 517
6-2 MissingPrefix (XML中缺少了Android的命名空间) 518
6-3 ScrollViewCount(ScrollView底下只能有一个组件) 519
6-4 DuplicateIds(在同一个页面配置中ID必须唯一) 520
6-5 NestedScrolling(避免嵌套的Scroll View) 521
6-6 ScrollViewSize(ScrollView下的组件尺寸属性错误) 522
6-7 ExtraTranslation(语系个性字符串文件不该有多余的资源) 524
6-8 StateListReachable(无法运行到的selector状态) 524
6-9 HardCodedText(字符串不该被直接写入页面配置文件) 525
6-10 MergeRootFrame(替换掉根节点的FrameLayout ) 526
6-11 InefficientWeight(不够有效率的组件宽度指示) 527
小结 528