标题：使用HTML、CSS和JavaScript开发Android程序
图书信息
使用HTML、CSS和JavaScript开发Android程序  （美）斯塔克（Stark,J.）著
申林，邹宇译
ISBN 978-7-121-13237-7
2011年6月出版
定    价：39.00元
16开
184页
内 容 简 介
本书是《Building Android Apps with HTML, CSS, and JavaScript》的中文翻译版，主要介绍了如何使用现有的Web技术构建Android应用程序。
本书的前3章介绍了如何使用基本的HTML、CSS和JavaScript技术构建简单的网络程序；第4章介绍了使用jQTouch技术使得网络程序与原生程序的体验相同；第5、6两章则讲述了利用HTML5的客户端存储技术使网络程序实现本地存储，进而成为一个离线应用；第7章利用PhoneGap项目使网络程序也可以操作Android硬件特性；第8章则为开发者描绘了在Android应用程序市场上发布应用程序的流程和一些技巧。
本书最大的特点是深入浅出，每一部分都与实例结合，增强了可操作性，更通俗易懂。无论对于希望通过Web技术构建移动应用的初学者，还是对于希望进入Android领域的Web工程师，都是一本不错的参考书。
译者序
毋庸置疑，我们正在迈入移动互联网的时代。想想看，聊QQ、逛淘宝，甚至是偷菜，以前必须打开计算机才能完成的事情，现在唾手可得。特别是iPhone和Android等智能手机的流行，更加推进了互联网移动化的步伐。与此同时，个性化的应用也如雨后春笋般丰富起来。你不仅可以随时随地获取新闻、利用碎片时间读书或者娱乐社交，甚至可以随时进行移动办公和支付，个人信息终端在向移动设备转移。
这个时代给开发者带来了新的机会，同时带来了不少挑战。机会在于数量更多的用户、更多样化的需求和性能更好的移动设备，但这些同样成为了他们的负担：往往一个手机应用要适配不同的编程模型、不同的手机硬件和各式各样的应用程序市场，大大增加了开发和推广的成本。那有没有一个灵活、通用而且支持大量应用程序的平台来解决这个挑战呢？答案是肯定的：运用HTML、CSS和JavaScript这些Web标准技术来构建移动应用程序。这本书就是在这样的背景下诞生的。
这不是一本介绍编程语言和技巧的书籍，虽然书中大量涉及了HTML、CSS、JavaScript甚至是HTML 5的知识。它更多地充当了“布道者”的角色，通过大量实例，传达一种思维模式：如何利用熟悉的Web技术，借助新兴框架的优势，来解决移动领域的新问题。所以如果你之前就熟悉这些Web技术，那将非常得心应手；没有也没关系，本书将介绍所用技术的基本概念，你将体验到一个全新的世界。
本书内容分为8章。前3章介绍网络应用程序的基本概念和优势，HTML、CSS和JavaScript的基本知识及运用这些Web标准技术构建简单的、能在Android浏览器中正常显示的网络应用程序。这是本书的基础，但不难理解，读者可以更多地关注其中的应用技巧。第4章介绍jQTouch这种工具，它是jQuery的一个插件，帮助实现更优雅的动画，使得网络应用程序的感官体验与本地应用程序相同。第5~7章是这本书的精华。第5章介绍了如何利用HTML 5的客户端数据存储特性来实现本地存储，可能需要一些SQL方面的基础。第6章利用了HTML 5的另外一个特性使得网络应用程序在无法连接网络时，依然正常运行，这个离线特性非常实用，也是将网络应用程序原生化的基础。第7章介绍了PhoneGap——一个强大的框架，使得网络应用程序可以利用加速度传感器、位置传感器等硬件特性与原生程序比肩，这是个非常令人兴奋的章节。最后一章则介绍了如何将开发好的Android应用程序发布到Android应用程序市场上，已经有相关经验的读者可以根据兴趣阅读。
本书的前4章由邹宇完成，后4章由我完成。在这当中，首先要特别感谢邹宇在百忙之中高质量地完成翻译工作，并且对其他部分进行了校审。感谢博文视点的其他诸位编辑，没有你们的指导和帮助，翻译工作不可能这么顺利。感谢我的朋友郑文涛和周婷婷，与你们一起推敲词句是一件愉快而幸福的经历。
申   林
2011年4月
前  言
要感谢移动电话的产生，它让我们从几乎无法快速获得信息步入了任何人都有机会获得大量信息资源的网络时代。这大概是我们这代人最重要的技术成就之一了。尽管它是如此重要，但移动计算技术仍然处于发展初期。它在技术上、资金上和政策上仍然处于前所未有的平台分裂状态，这种状态在获得解决之前将仍然会越来越糟。
那些需要吸引大量不同群体用户的开发者正面临着严峻的挑战：如何使用一个实用、价格合理且可支持大量应用的方式来实现我们的移动愿景？在很多情况下，答案是使用网络技术。而HTML5和移动设备的结合优势已经创造了这样的环境，即使是一个开发新手都可以创建一些在全球范围内改善人们生活的移动应用程序。
Google的Android操作系统在移动计算领域内是一个引人注目的新生力量。在真正的Google模式中，这是个开放、免费并且互操作性很强的平台。开发工具功能全面且强大，如果技术更先进一些，甚至可以在不同的平台上运行。
运营商和手机制造商已经顺应潮流加入Android阵营。市场上已经大量地涌入了各种样式和型号的Android设备了。这对开发者来说是一把双刃剑。一方面，更多的设备意味着一个更大的市场；另一方面，更多的设备也意味着更多的平台分裂。和一般手机市场上的分裂一样，Android的分裂问题往往可以通过采用HTML、CSS和JavaScript生成应用程序的方法来解决。
首先要承认不是所有的应用都适合用网络技术开发，即很多用原生代码写起应用程序来比HTML要简单。若开发者不确定用哪种方法去实现，我建议：
如果可以用HTML、CSS和JavaScript来构建应用程序，也许就应该用它们。
使用开源、基于标准的网络技术为开发者带来了很大的自由度、广泛的应用范围和低廉的费用。你可以很容易地将一个程序作为网络应用程序发布，然后在成千上万的真实用户使用下修改和测试。一旦你准备改变，可以用PhoneGap将网络应用转换成原生的Android应用，根据你的喜好加上一些设备专有的特征，并且提交到Android应用程序市场，或者在网站上提供下载。听起来不错，对吧！
本书的读者
本书假设读者已经有了一定的HTML、CSS、JavaScript（特别是jQuery）的读写基础。第5章中包含了一些基本的SQL程序，所以对SQL语法的了解会有助于理解内容，但这不是必要的。
本书的使用
本书尽可能避免了Android SDK。你所需要依照的大多数例子可使用文本编辑器和最新版的Google Chrome （一个适用于Mac和Windows的尖端网页浏览器）。在第7章，讲述PhoneGap的材料中将要用到Android SDK，而我会解释如何将网络应用程序转换为可提交到Android Market的原生应用程序。
本书的格式
以下列出了本书中一些格式的习惯用法：
斜体 Italic
表示新术语、URLs、E-mail地址、文件名和文件扩展名。
等宽字体Constant width
用来显示程序列表，包括段落中提到的程序内容，例如变量或者函数名、数据库、数据类型、环境变量、语句或关键词。
等宽黑体 Constant width bold
表示代码或其他需要读者逐字理解的内容。
等宽斜体 Constant width italic
表示文中需要读者在使用的时候用其他内容代替的部分。
中文版书中订口处的“”表示原书页码，便于读者与原英文版图书对照阅读，本书的索引所列页码为原英文版页码。
使用代码样例
本书是为了帮助用户提供解决方案。总的来说，用户可以直接在程序或者文档中使用本书提供的代码，无须与我们联系获得许可，除非用户复制大量的程序。例如，用户想利用本书中的一些代码编写程序无须得到许可，但如果是想将O’Reilly书中的代码例子用于出售或复制光盘就必须获得许可。可以引用本书的内容或者代码样例来解决其他问题，但是在自己的产品文档中使用本书的重要代码样例则要事先得到许可。
我们不硬性要求用户在引用本书内容时标明出处，但感谢您的标注。标注内容通常包括标题、作者、出版者，以及ISBN书号。例如，“Building Android Apps with HTML, CSS, and JavaScript by Jonathan Stark. Copyright 2010 Jonahan Stark, 978-1-449-38326-8.”。
如果您对于引用代码样例是否侵权不能确定，请随时联系我们。
Safari®在线图书
Safari在线图书是一个按需数字图书馆，可搜索超过7500部技术与创新点的参考图书和视频来寻找你急需的解决方案。
通过订阅，可以通过在线、手机和移动设备等方式阅读或观看Safari图书馆中任何章节或视频。甚至有机会阅读手稿，发现有待改进的地方并反馈给作者。可以复制粘贴代码样例，组织下载喜欢的章节，在关键部分插入图书标签，创建笔记，打印页面，从各种简便的功能中获益。
O’Reilly Media 上传本书（英文版）至Safari在线图书服务商。与O’Reilly其他类似图书及出版物一样，Safari在线图书拥有本书的一切数字版权。
联系我们
对于本书的评论或问题请联系出版商：
美国：
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国：
北京市西城区西直门南大街2号成铭大厦C座807室（100035）
奥莱利技术咨询（北京）有限公司
有关本书的网页、勘误表、样例和其他信息。
致谢
写一本书是团队的力量。我由衷地感谢以下朋友慷慨的支持。
感谢Tim O’Reilly、Brian Jepson和其他在ORM的朋友们，是他们使本书的写作过程变得如此有价值和富有教育意义。
感谢David Kaneda对完美的执着追求。不论是一段程序或是用户界面动画，他都会一直修改到完美才肯睡觉，而我非常赞赏这一点。
感谢那些在Nitobi创造和一直支持PhoneGap的朋友。
感谢Brian Fling帮我扩宽了移动领域的视野，而不只是停留在最新、最好的硬件上。Brian深入了解移动领域的现状，他是个出色的作家，最重要的是，他是一个非常慷慨的伙伴。
感谢PPK、John Gruber、John Allsopp和John Resig的贡献及使得本书完成的潜在技术支持者。
感谢Joe Bowser、Brian LeRoux、Sara Czyzewicz，以及一群在OFPS上慷慨地提供关于本书的评论和问题的朋友。我非常感激你们的反馈，它们非常有帮助。
感激我的家人、朋友和委托人在我忙于写作时对我的理解和支持。
最后，感谢Erica，是你使一切变为可能，我爱你!
目  录
第1章  入门指南 1
网络应用程序与原生应用程序的对比 1
什么是网络应用程序 1
什么是原生应用程序 1
优势和劣势 2
哪种方法最合适你 2
网络编程速成 3
HTML入门 3
CSS入门 5
JavaScript入门 9
第2章  基本样式 13
还没网站 13
准备工作 14
准备独立的Android样式表 17
控制页面缩放 18
添加Android CSS 20
添加Android视觉效果 23
使用jQuery添加基本行为 24
内容回顾 30
第3章  高级样式 31
添加一点Ajax 31
交通警察 31
添加一些内容 34
JavaScript的路由请求 34
简单的点缀 36
进度指示器（Process Indicator） 36
设置页面标题 39
处理长标题 41
自动回到顶部 42
只拦截本地链接 43
编写自己的返回按钮 44
在主屏幕上添加图标 50
内容回顾 50
第4章  动画 51
来自朋友的帮助 51
让主页滑动起来 51
添加Dates面板 54
添加Date面板 56
添加New Entry面板 57
添加Settings面板 60
将所有代码放在一起 61
自定义jQTouch 64
内容回顾 65
第5章  客户端数据存储 67
Web Storage 67
将用户设置保存到本地 68
将选中的数据保存到Session Storage中 71
Web SQL Database 74
创建数据库 74
插入行 77
检索行及处理结果集 80
删除行 84
内容回顾 88
Web Database错误编码参考 88
第6章  走向离线 89
离线应用程序缓存基础 89
在线Whitelist（白名单）和Fallback（备选）选项 92
创建动态Manifest文件 95
调试 101
JavaScript控制台（JavaScript Console） 101
内容回顾 104
第7章  走向原生 105
PhoneGap简介 105
下载Android SDK 107
下载PhoneGap 110
配置环境 111
创建Android Virtual Device（Android虚拟设备） 113
创建KiloGap 114
在模拟器中安装KiloGap 118
使用屏幕的全部高度 121
自定义程序图标 122
在手机上安装KiloGap 123
使用JavaScript来控制手机 123
Beep（蜂鸣）、Vibrate（振动）及Alert（提醒） 123
地理位置 127
加速度传感器 133
内容回顾 136
第8章  将应用程序提交到Android应用程序市场上 137
准备程序的发行版本 137
移除调试代码 137
应用程序版本管理 138
应用程序签名管理 138
将程序上传到Android应用程序市场 141
直接分发程序 143
延伸阅读 145
附录  147
索引 151