第一篇 入门篇 3
第1章 认识PhoneGap 3
1.1 认识PhoneGap 3
1.1.1 PhoneGap的发展 3
1.1.2 PhoneGap的特色 5
1.1.3 PhoneGap的优势 7
1.2 PhoneGap的小伙伴们 8
1.2.1 jQuery Mobile 8
1.2.2 jQuery Touch 9
1.2.3 jQ iPhone UI 10
1.3 饱受争议的PhoneGap 11
1.3.1 因为“慢”遭诟病 11
1.3.2 因为“快”引发的争议 12
1.4 小结 12
第2章 PhoneGap入门 13
2.1 开发环境的搭建 13
2.1.1 安卓开发环境的搭建 13
2.1.2 PhoneGap的配置 20
2.2 跨平台的HTML 5 25
2.3 更好玩的CSS 3 27
2.4 完美兼容浏览器的jQuery框架 30
2.5 小结 31
第3章 开始前的准备 32
3.1 HTML 5,你真的准备好了么 32
3.2 HTML 5的若干练习 35
3.2.1 实现渐变的背景和圆角的按钮 35
3.2.2 利用JavaScript响应用户的操作 38
3.2.3 利用CSS 3生成动画 39
3.2.4 利用JavaScript让“流氓兔”跑步 42
3.3 关于界面设计 44
3.4 使用jQuery Mobile进行界面制作 48
3.5 编辑器的选择 50
3.6 PhoneGap中的API能干什么 51
3.7 小结 53
第二篇 基础知识篇 57
第4章 PhoneGap的本地事件 57
4.1 什么是生命周期 57
4.1.1 Activity的生命周期 57
4.1.2 通过实例体验Activity的生命周期 59
4.1.3 PhoneGap的生命周期 61
4.2 使用程序加载事件 63
4.3 使用被动消息事件 66
4.4 使用主动消息事件 68
4.5 小结 70
第5章 设备信息的获取 71
5.1 PhoneGap获取设备信息 71
5.2 device类的异常情况 72
5.3 PhoneGap程序运行慢的解决方案 74
5.4 实战:用PhoneGap制作一个简单的应用 75
5.4.1 界面设计及实现 75
5.4.2 为应用加入功能 79
5.5 小结 82
第6章 通讯录信息的获取 83
6.1 创建一个Contact对象 83
6.2 利用find()方法查询通讯录 85
6.3 Contact对象的属性 87
6.4 联系人的创建、读取、修改和删除 90
6.5 ContactField对象的深入研究 92
6.6 小结 94
第7章 PhoneGap的消息提示 95
7.1 notification警告的使用 95
7.2 notification确认对话框的使用 97
7.3 notification显示可以传递变量的对话框 99
7.4 notification控制蜂鸣器和震动 101
7.5 小结 102
第8章 加速度传感器 103
8.1 获取当前的加速度 103
8.2 监视设备的加速度 105
8.3 详解acceleration对象 108
8.4 加速度传感器的使用 108
8.4.1 游戏 108
8.4.2 抽奖 109
8.4.3 更多更强大的交互 109
8.5 实战:制作“马上有一切”的动画 109
8.5.1 原形设计 110
8.5.2 素材准备 110
8.5.3 动画实现 111
8.5.4 最终实现 115
8.6 小结 118
第9章 设备传感器 119
9.1 利用Geolocation类获取设备地理信息 119
9.2 利用getCurrentPosition()方法获取设备所在坐标 120
9.3 使用watchPosition()方法监控设备的位置变化 123
9.4 设备方向的获取 126
9.5 监视设备方向的两种方法 128
9.6 小结 131
第10章 PhoneGap对音频的控制 132
10.1 利用PhoneGap播放音频的方法 132
10.2 利用pause()方法暂停播放音乐 134
10.3 利用stop()方法停止播放音频文件 135
10.4 获取音频文件的更多信息 137
10.5 播放指定位置的音乐 139
10.6 使用PhoneGap录制声音 142
10.7 释放音频资源 144
10.8 实战:制作一个简单的“录音机”软件 144
10.8.1 需求分析 144
10.8.2 界面实现 145
10.8.3 界面交互的实现 150
10.8.4 录音和播放功能的实现 152
10.8.5 最终的组合 154
10.9 小结 156
第11章 PhoneGap中的文件操作 157
11.1 使用FileReader读取文件 157
11.2 使用FileWriter编写文件 161
11.3 使用FileSystem获取文件系统信息 166
11.4 FileEntry类简介 168
11.5 DirectoryEntry类的简介 172
11.6 使用FileTransfer向服务器上传文件 176
11.7 其他与文件系统相关的类 179
11.8 小结 183
第12章 多媒体资源的捕获 184
12.1 声音的采集 184
12.2 图像信息的采集 188
12.3 视频的采集 191
12.4 鸡肋的MediaFileData对象 193
12.5 小结 194
第13章 PhoneGap本地存储的使用 195
13.1 HTML 5中的本地存储功能 195
13.1.1 为什么需要本地存储? 195
13.1.2 HTML 5的本地存储 196
13.2 PhoneGap中的本地存储功能 198
13.3 数据库的使用 199
13.4 数据库内容的读取 203
13.5 键值对的使用方法 206
13.6 小结 209
第三篇 项目实战篇 213
第14章 打造一款类Flappy Bird的小游戏 213
14.1 需求分析 213
14.2 模型建立 215
14.3 界面设计 217
14.4 逻辑的设计和实现 220
14.4.1 “像素鸟”的飞行 220
14.4.2 “像素鸟”的跳跃和下落 223
14.4.3 碰撞检测功能 225
14.5 界面的美化 228
14.6 缺陷和不足 230
14.6.1 玩法上的缺陷 230
14.6.2 功能上的贫乏 231
14.6.3 人机交互不友好 231
14.7 小结 232
第15章 实战PhoneGap新闻应用 233
15.1 项目开始前的“闲言碎语” 233
15.2 项目需求 235
15.3 界面设计和实现 235
15.3.1 新闻列表的设计和实现 235
15.3.2 新闻内容页的实现 238
15.3.3 界面的进一步整合 242
15.4 利用Ajax获取服务器上的信息 244
15.4.1 Ajax的一个简单实例 244
15.4.2 JavaScript跨域解决方法 246
15.4.3 服务端的实现 247
15.5 让数据显示出来 251
15.5.1 新闻列表的显示 251
15.5.2 新闻内容的显示 253
15.5.3 最终的整合 254
15.6 小结 258
第16章 实战PhoneGap制作号码本 259
16.1 项目介绍 259
16.2 为PhoneGap编写插件 260
16.2.1 实现发短信的插件 260
16.2.2 为PhoneGap编写电话拨号插件 265
16.3 界面设计 266
16.4 界面的实现 267
16.4.1 联系人列表的实现 268
16.4.2 新建联系人界面的实现 269
16.4.3 短信编辑界面的实现 271
16.5 界面功能的实现 273
16.5.1 联系人数据的生成 273
16.5.2 页面的整合 278
16.6 最终功能的实现 283
16.7 小结 285
第四篇 项目管理篇 289
第17章 寻找“有特色”的应用 289
17.1 搜集创意 289
17.1.1 “天天爱消除”和“2048”游戏流行的原因 289
17.1.2 选择最让人“抓狂”的部分 291
17.1.3 让“抓狂”持续下去 292
17.2 先给我一个理由 293
17.2.1 寻找刚性需求 293
17.2.2 社交是刚性需求 294
17.3 寻找靠谱的合伙人 295
17.4 开发完成 297
17.5 应用发布之后 298
17.6 小结 299
第18章 人机交互与收入 300
18.1 人机交互的意义 300
18.2 从iOS 7看人机交互的魔力 302
18.2.1 锁屏界面的变化 302
18.2.2 新的后台管理界面 303
18.2.3 掌控一切的感觉 304
18.2.4 新的多设备协同 305
18.2.5 合理的取舍 305
18.3 实现优秀人机交互的几个建议 307
18.3.1 避免用户等待 307
18.3.2 尽量采用用户习惯的UI 308
18.3.3 让用户更容易操作 309
18.3.4 适当的功能隐藏 311
18.4 小结 312
第19章 应用的发布与推广 313
19.1 发布前的战斗 313
19.2 应用发布了 316
19.2.1 起名字的学问 316
19.2.2 如何推广应用 318
19.3 遇到了难题 318
19.4 面对竞争 320
19.4.1 你的应用已经大火 320
19.4.2 同类应用的竞争 321
19.5 小结 322