我的小作——《Android应用开发揭秘》有幸在一月内重印,还要感谢大家的支持!
书名:Android应用开发揭秘
作者:杨丰盛
出版社:机械工业出版社
ISBN:9787111291954
丛书名: 揭秘系列丛书
出版日期:2010 年3月
开本:16
页码:515
版次:1-2
定价:69元
豆瓣网讨论地址:
http://www.douban.com/subject/4200822/
China-pub预订地址:
http://www.china-pub.com/196305
图 书 内 容
国内第一本基于Android 2.0的经典著作,5大专业社区联袂推荐,权威性毋庸置疑!
本书内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏引擎设计、Android应用优化、OpenGL等高级知识,最重要的是还全面介绍了如何利用原生的C/C++(NDK)和Python、Lua等脚本语言(Android Scripting Environment)来开发Android应用;本书实战性强,书中的每个知识点都有配精心设计的示例,尤为值得一提的是,它还以迭代的方式重现了各种常用的Android应用和经典Android游戏的开发全过程,既可以以它们为范例进行实战演练,又可以将它们直接应用到实际开发中去。
本 书 赞 誉
20世纪90年代初,裘伯君、鲍岳桥等IT行业的前辈“单打独斗”就能开发出脍炙人口的应用,如今做一个项目动辄就需要数百人的大规模团队和千万级的巨额开发费用,程序员真的没有了展露个人才华和创意的机会吗?我们正站在移动技术改变人类生活方式的十字路口,而移动互联网正是这一切的关键。Android以全新的开放平台和全球化的市场,为小团队提供了一个充分展现自己的舞台。本书为所有Android开发者提供了绝佳的参考,不可不读!
—Android中文站(
http://www.androidin.com/)
与已经出版的所有同类书相比,本书内容更全面,几乎涵盖了Android开发的所有方面;实战性更强,不仅各个知识点都有翔实的范例,而且还包含多个实用的完整案例;主题更新颖,Android 2.0中的各种最新特性一览无余……本书值得各种水平层次的Android应用开发者阅读,强烈推荐!
—Android中文用户组
随着3G技术的成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。在Google和Android手机联盟的共同推动下,Android在众多移动应用开发平台中脱颖而出。本书的出版对于广大Android应用开发者来说不啻是一种福音,它将为Android开发者社区注入强大的活力!
—毕惠子 Android实验室(
http://www.androidlab.cn/)
随着移动智能设备的普及,我国移动应用的需求即将迎来“井喷”,本书能让你轻松转型为Android开发者,助你笑傲移动应用开发之巅。极力推荐!
—谷奥(
http://www.google.org.cn/)
这是一本参考手册,内容的完整性和系统性几乎无可挑剔,可作为广大Android开发者的案头必备书;这是一部权威指南,基础知识部分翔实而丰富,高级知识部分深入且饱含最佳实践,能从本质上提升开发者对Android的理解和开发水平。尤为值得一提的是,Android 2.0中新增了大量激动人心的新特性,不仅支持多点触摸设备、软键盘,而且还支持多账户在线管理、蓝牙……作为国内第一本基于Android 2.0的著作,本书可谓极具前瞻性,第一时间将这些新特性完美地呈现给了广大读者。
—安卓网(
http://www.hiapk.com/)
前 言
3G牌照在国内发放后,3G、Andriod、iPhone、Google、苹果、手机软件、移动开发等词越来越充斥于耳。随着3G网络的大规模建设和智能手机的迅速普及,移动互联网时代已经微笑着迎面而来。
以创新的搜索引擎技术而一跃成为互联网巨头的Google,无线搜索成为Google进军移动互联网的一块基石。早在2007年,Google中国就把无线搜索当作战略重心,不断推出新产品,尝试通过户外媒体推广移动搜索产品,并积极与运营商、终端厂商、浏览器厂商等达成战略合作。
Android操作系统是Google最具杀伤力的武器之一。苹果以其天才的创新,使得iPhone在全球迅速拥有了数百万忠实“粉丝”,而Android作为第一个完整、开放、免费的手机平台,使开发者在为其开发程序时拥有更大的自由。与Windows Mobile、Symbian等厂商不同的是,Android操作系统免费向开发人员提供,这样可节省近三成成本,得到了众多厂商与开发者的拥护。最早进入Andriod市场的宏达电已经陆续在一年内推出了G1、Magic、Hero、Tattoo等4款手机,三星也在近期推出了Galaxyi7500,连摩托罗拉也推出了新款Andorid手机Cliq,中国移动也以Android为基础开发了Ophone平台。这些发展证明Android已经成为智能手机市场的重要发展趋势。
从技术角度而言,Android与iPhone相似,采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查收电子邮件、搜索网址和观看视频节目等。Android手机比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入了全部Web应用的平台。Android的版本包括Android 1.1、Android 1.5、Android 1.6,Android 2.0刚发布不久。随着版本的更新,从最初的触屏到现在的多点触摸,从普通的联系人到现在的数据同步,从简单的Google Map到现在的导航系统,从基本的网页浏览到现在的HTML 5,这都说明Android已经逐渐稳定,而且功能越来越强大。此外,Android平台不仅支持Java、C、C++等主流的编程语言,还支持Ruby、Python等脚本语言,甚至Google专为Android的应用开发推出了Simple语言,这使得Android有着非常广泛的开发群体。
我们都知道,无论是产品还是技术,商业应用是它最大的发展动力。Android如此受厂商与开发者的青睐,它的前景一片光明。伴随着装有Android操作系统的移动设备的增加,基于Android的应用需求势必也会增加。Android作为新的平台、新的技术,国内目前介绍其技术的书籍甚少,不能满足各个层次的开发者,为了帮助众多开发人员和爱好者进入移动互联网领域,并提高程序开发水平,笔者写作了本书。
本书面向的读者
阅读本书的唯一条件是具有一定的Java基础,当然扩展篇可能会涉及C、C++和脚本语言的知识。
本书面向的读者群包括毫无Android开发经验的初学者,以及有一定的Android开发经验但缺乏系统学习的开发人员。
如何阅读本书
本书从基础入手,循序渐进地讲述了Android的主要功能和用法,使读者对其有完整的认识,掌握其结构框架。同时,从实战的角度出发,通过大量的示例程序,让读者边学习边实践,更深刻地理解Android系统的优点所在。
另外,本书为每个功能和知识点都提供了一个示例程序,可操作性极强,建议在阅读书本书的同时,一定要结合本书所附带的示例程序(完整的示例程序源代码可登录华章网站
www.hzbook.com下载)。本书所附的示例程序都是基于最新的Android 2.0 的SDK,源代码目录结构如图1所示,章节中每一个示例,都可以根据所在的章节及所指定的项目名称在所附源代码中找到对应的项目文件夹。每个项目文件夹都按如图2所示的目录结构来存放项目所需的所有源文件。
在安装了Android开发环境之后,可以直接将Android项目导入到Eclipse中,步骤如下:
首先,启动Eclipse,选择“File”→“Import...”菜单,展开“General”项,选择“Existing Projects into Workspace”导入项目到工作区,如图3所示。
然后,点击“Next”按钮,进入选择项目文件目录,如图4所示,选择好项目目录后,点击“Finish”按钮,等待导入完成即可。如果需要将项目文件一起拷贝到工作区,就需要在图4的界面上选择“Copy projects into workspace”复选框。
图
3
导入项目到工作区
感谢所有在本书写作过程中给予我指导、帮助和鼓励的朋友,尤其是本书的策划编辑杨福川,他不仅对本书提出了宝贵的写作建议,而且还和他的同事曾珊对书稿进行了仔细的审阅。
感谢一直以来信任、鼓励、支持我的父母和亲人。
最后还要感谢我的女友,正是她的爱与支持,才使我有了今天的收获。
虽然我们热切地希望与广大读者朋友分享使用Android平台的应用开发经验,但由于时间有限,书中难免存在疏漏与错误,诚恳地希望各位读者批评、指正。如果你发现书中有任何问题,抑或是想和本书的作者和读者交流关于Android开发中的相关话题,你可以申请加入华章俱乐部,这里不仅有技术专家,还有很多志同道合的朋友,大家共同进步吧!
目 录
前 言
第一部分 准备篇
第1章 Android开发简介 2
1.1 Android基本概念 2
1.1.1 Android简介 2
1.1.2 Android的系统构架 5
1.1.3 Android应用程序框架 7
1.2 OMS介绍 8
1.2.1 OPhone介绍 8
1.2.2 Widget介绍 9
1.3 小结 9
第2章 Android开发环境搭建 11
2.1 Android开发准备工作 11
2.2 开发包及其工具的安装和配置 11
2.2.1 安装JDK和配置Java开发环境 11
2.2.2 Eclipse的安装与汉化 12
2.2.3 SDK和ADT的安装和配置 14
2.3 创建第一个Android项目——HelloAndroid 16
2.3.1 创建HelloAndroid项目 16
2.3.2 运行HelloAndroid及模拟器的使用 18
2.3.3 调试HelloAndroid 22
2.4 小结 25
第二部分 基础篇
第3章 Android程序设计基础 28
3.1 Android程序框架 28
3.1.1 Android项目目录结构 28
3.1.2 Android应用解析 32
3.2 Android的生命周期 37
3.3 Android程序UI设计 41
3.4 小结 42
第4章 用户界面开发 44
4.1 用户界面开发详解 44
4.1.1 用户界面简介 44
4.1.2 事件处理 45
4.2 常用控件应用 49
4.2.1 文本框(TextView) 49
4.2.2 列表(ListView) 50
4.2.3 提示(Toast) 53
4.2.4 编辑框(EditText) 55
4.2.5 单项选择(RadioGroup、RadioButton) 56
4.2.6 多项选择(CheckBox) 59
4.2.7 下拉列表(Spinner) 62
4.2.8 自动提示(AutoComplete-TextView) 64
4.2.9 日期和时间(DatePicker、TimePicker) 65
4.2.10 按钮(Button) 68
4.2.11 菜单(Menu) 70
4.2.12 对话框(Dialog) 72
4.2.13 图片视图(ImageView) 75
4.2.14 带图标的按钮(ImageButton) 78
4.2.15 拖动效果(Gallery) 81
4.2.16 切换图片(ImageSwitcher) 83
4.2.17 网格视图(GridView) 86
4.2.18 卷轴视图(ScrollView) 87
4.2.19 进度条(ProgressBar ) 90
4.2.20 拖动条(SeekBar) 93
4.2.21 状态栏提示(Notification、NotificationManager) 95
4.2.22 对话框中的进度条(ProgressDialog) 97
4.3 界面布局 100
4.3.1 垂直线性布局 101
4.3.2 水平线性布局 102
4.3.3 相对布局(RelativeLayout) 103
4.3.4 表单布局(TableLayout) 104
4.3.5 切换卡(TabWidget) 106
4.4 小结 109
第5章 Android游戏开发 110
5.1 Android游戏开发框架 110
5.1.1 View类开发框架 110
5.1.2 SurfaceView类开发框架 114
5.2 Graphics类开发 117
5.2.1 Paint和Color类介绍 117
5.2.2 Canvas类介绍 120
5.2.3 几何图形绘制 122
5.2.4 字符串绘制 125
5.2.5 图像绘制 126
5.2.6 图像旋转 129
5.2.7 图像缩放 131
5.2.8 图像像素操作 134
5.2.9 Shader类介绍 137
5.2.10 双缓冲技术 140
5.2.11 全屏显示 142
5.2.12 获得屏幕属性 142
5.3 动画实现 144
5.3.1 Tween 动画 144
5.3.2 Frame 动画 149
5.3.3 GIF动画播放 153
5.4 小结 155
第6章 Android数据存储 156
6.1 Android数据存储初探 156
6.2 数据存储之Shared Preferences 157
6.3 数据存储之Files 159
6.4 数据存储之Network 162
6.5 Android数据库编程 165
6.5.1 SQLite简介 166
6.5.2 SQLite编程详解 166
6.5.3 SQLiteOpenHelper应用 172
6.6 数据共享(Content Providers) 177
6.7 小结 187
第7章 多媒体开发 188
7.1 多媒体开发详解 188
7.1.1 Open Core 188
7.1.2 MediaPlayer 190
7.1.3 MediaRecorder 192
7.2 播放音乐 194
7.3 播放视频 201
7.4 录制歌曲 204
7.5 相机设置 208
7.6 闹钟设置 211
7.7 铃声设置 214
7.8 小结 219
第8章 网络与通信 220
8.1 网络通信基础 220
8.1.1 无线网络技术 220
8.1.2 Android网络基础 222
8.2 HTTP通信 225
8.2.1 HttpURLConnection接口 225
8.2.2 HttpClient接口 232
8.2.3 实时更新 235
8.3 Socket通信 238
8.3.1 Socket 基础 239
8.3.2 Socket 应用(简易聊天室) 244
8.4 网络通信的中文乱码问题 249
8.5 WebKit应用 250
8.5.1 WebKit概述 251
8.5.2 WebView浏览网页 252
8.5.3 WebView与Javascript 259
8.6 WiFi介绍 261
8.7 蓝牙 266
8.8 小结 276
第9章 Android特色开发 277
9.1 传感器 277
9.2 语音识别 280
9.3 Google Map 283
9.3.1 Google Map概述 283
9.3.2 准备工作 285
9.3.3 Google Map API的使用 287
9.3.4 定位系统 291
9.4 桌面组件 297
9.4.1 快捷方式 297
9.4.2 实时文件夹 299
9.4.3 Widget开发 301
9.5 账户管理 305
9.6 小结 309
第三部分 实例篇
第10章 Android应用开发实例 312
10.1 情境模式 312
10.2 文件管理器 317
10.3 通讯录 323
10.4 音乐播放器 330
10.5 天气预报 334
10.6 个人地图 342
10.7 Widget日历 345
10.8 小结 348
第11章 Android游戏开发实例 349
11.1 手机游戏开发简介 349
11.2 游戏框架设计 351
11.3 地图设计 356
11.4 主角设计 358
11.5 图层管理器 363
11.6 游戏音效 367
11.7 游戏存档 369
11.8 小结 372
第四部分 高级篇
第12章 Android OpenGL开发基础 374
12.1 OpenGL简介 374
12.2 多边形 378
12.3 颜色 380
12.4 旋转 381
12.5 3D空间 382
12.6 纹理映射 384
12.7 光照和事件 386
12.8 混合 388
12.9 小结 390
第13章 Android OpenGL综合应用 391
13.1 移动图像 391
13.2 3D世界 394
13.3 飘动的旗帜 398
13.4 显示列表 400
13.5 雾 402
13.6 粒子系统 403
13.7 蒙版 407
13.8 变形 411
13.9 小结 415
第14章 游戏引擎实现 416
14.1 游戏引擎介绍 416
14.1.1 什么是引擎 416
14.1.2 引擎的进化 417
14.1.3 常见的游戏引擎 417
14.1.4 Android游戏引擎 418
14.2 游戏引擎结构 418
14.2.1 游戏引擎原理 418
14.2.2 游戏引擎定位 419
14.2.3 游戏引擎框架 420
14.3 游戏引擎设计 420
14.3.1 游戏引擎结构和功能设计 420
14.3.2 游戏引擎设计注意事项 421
14.4 游戏引擎实现 422
14.4.1 Activity类实现 422
14.4.2 流程控制和线程 424
14.4.3 游戏对象与对象管理 427
14.4.4 图形引擎 428
14.4.5 物理引擎 441
14.4.6 事件模块 443
14.4.7 工具模块 445
14.4.8 脚本引擎、音效模块网络模块 446
14.5 小结 450
第15章 优化技术 451
15.1 优化的基本知识 451
15.1.1 如何书写出优秀代码 451
15.1.2 编程规范 452
15.2 程序性能测试 454
15.2.1 计算性能测试 455
15.2.2 内存消耗测试 457
15.3 初级优化 459
15.4 高级优化 465
15.5 Android高效开发 468
15.6 Android UI优化 474
15.7 其他优化 480
15.7.1 zipalign 480
15.7.2 图片优化 481
15.8 小结 482
第五部分 扩展篇
第16章 Android NDK开发 484
16.1 Android NDK简介 484
16.2 安装和配置NDK开发环境 485
16.2.1 系统和软件需求 486
16.2.2 NDK开发环境搭建 487
16.2.3 编译第一个NDK程序 492
16.3 Android NDK开发 493
16.3.1 JNI接口设计 493
16.3.2 使用C/C++实现本地方法 496
16.3.3 Android.mk实现 498
16.3.4 Application.mk实现 501
16.3.5 编译C/C++代码 502
16.4 Android NDK中使用OpenGL 503
16.5 小结 506
第17章 Android脚本环境 507
17.1 Android脚本环境简介 507
17.2 Android脚本环境安装 508
17.3 如何编写Android脚本程序 511
17.4 小结 515