标题：Android游戏编程之从零开始
图书信息
ISBN：9787302265351  封面定价：59元
印次：1-1
装帧：平装
印刷日期：2011-9-2
作者简介
  作者-李华明李华明
昵称：xiaominghimi
英文名：Himi
出生日期：1990年1月1日
职业：CTO、青年作家
名言：不要让任何事情成为你不去学习的理由。
移动开发专家，专注于移动开发领域，多年 J2me、Android、iOS 平台游戏与软件开发经验；
2010 年年初与清华出版社签约创作《Android 游戏开发编程之从零开始》一书，此书于2011 年成功面市，受到业界人士的关注与支持；
2012 年年初与清华出版社签约创作《iOS游戏编程之从零开始—Cocos2d-x与cocos2d引擎游戏开发》一书，此书于2013 年成功面市，再次受到业界人士的赞赏与支持；
在CSDN、ITeye、51CTO、eoe-Android、中国移动开发者社区、微度网等多家技术论坛担任技术专家与版主；博客中发表了一系列Android 与iOS 游戏开发的文章受到广泛关注！其中最值得提起的是博客中《浅谈4 年游戏开发de 自学历程！》一篇自述让众多的大学生与IT 业界人士大为鼓舞与赞赏；
图书简介
本书主要系统地讲解了Android游戏开发，从最基础部分开始，让零基础的Android初学者也能较为快速学习和掌握Android游戏开发。
本书一共8章，内容包括Android平台介绍与环境搭建、Hello，Android！项目剖析、游戏开发中常用的系统组件、游戏开发基础、游戏开发实战、游戏开发提高篇、Box2d物理引擎、物理游戏实战。随书光盘包括全书65个项目源代码。
本书适合Android游戏开发的初学者使用，也适合作为Android游戏培训的教材和高校游戏专业师生的参考书。
前言
如今的Android系统市场份额已节节攀升，势不可挡，越来越多的开发者加入到Android应用开发的行列。从2010年的数据表明，Android系统仅仅推出两年已超过诺基亚的Symbian系统，而且2010年Android市场应用也相比2009年增长了6倍之多；最值得一提的是，这些与日俱增的Android应用程序中，无论是按使用量还是总收入排名，70%的应用排行榜首都是游戏。
本书以Java语言为主系统讲解了Android游戏开发，从最基础的内容开始，让读者循序渐进地学习和掌握Android游戏开发的知识与技巧。对于有Java基础的读者，能够更容易、更快地掌握，当然，阅读本书不需要读者有移动设备的开发经验。
本书总共8章，每章都以前一章的知识点作为铺垫展开，所以对于刚接触Android游戏开发的读者，建议从前往后依次逐章学习。各章知识点整体以从易到难、从浅到深的形式呈现，所以建议读者在阅读本书时一定不要跳读，否则学习起来可能会事倍功半。本书各章讲解的内容如下：
第1章介绍Android平台的趋势与发展，以及Android应用开发环境的搭建。
第2章通过一个最简单的Android项目代码对Android开发的基础概念进行详细讲解。
第3章介绍游戏开发中常用的一些基础控件以及布局等。
第4章介绍Android游戏开发的方法，讲解了在Android平台进行游戏开发的一些常用框架、游戏开发的基础概念以及游戏开发相关类的说明。
第5章介绍“飞行射击”游戏的开发，本章是对前几章内容的一个综合演练，尤其对第4章各模块知识点的综合运用，通过本章的学习读者将熟悉和掌握游戏开发流程。
第6章是游戏开发提高部分，主要介绍Android系统手机的一些特性与独有功能，蓝牙对战游戏开发、网络手机通信也都将在本章进行讲解。
第7章讲解在Android系统中结合Box2D物理引擎进行游戏开发的方法。
第8章讲解“迷宫小球”和“堆房子”两个Box2d物理游戏的实战开发。
本书中讲解的知识点基本与Android SDK版本无关，也就是说开发出的应用在Android操作系统的任意版本下都可以运行，没有版本之间的限制。当然也有一些内容只有在SDK较高版本才会有的功能，但是都会在书中有详细的标注与提示，比如有关蓝牙功能的开发需要用到Android 2.0版本。
在本书的撰写过程中，有幸得到游戏源手机游戏研发技术总监桂志刚及其教学团队的大力支持。他们从实际研发及一线教学实践出发，立足学员需求和未来职业发展，为本书的定位、知识体系及应用实例的选择提供了诸多宝贵建议。本书课程和教学体系在其机构进行了实践应用，取得了较为理想的效果。在此，诚挚感谢游戏源游戏开发培训机构为本书提供实践应用的平台。
在此，我要特别感谢我的家人，完成本书编写的动力主要就是来自家人对我关心与支持。同时感谢我的同事李翠，为这本书设计了封面。也要感谢清华大学出版社图格事业部的夏毓彦老师对本书的出版做了大量的工作.
图书目录
第1章　Android 平台介绍与环境搭建
1．1　Android平台简介 2
1．1．1 Android操作系统平台的优势和趋势 2
1．1．2 Android SDK与Android NDK 2
1．2　Android开发环境的搭建 3
1．2．1 搭配环境前的准备工作 3
1．2．2 安装和配置环境 6
1．2．3 SDK版本更新 11
1．3　本章小节 13
第2章　Hello，Android！
2．1　创建第一个Android项目 15
2．2　剖析Android Project 结构 16
2．3　AndroidManifest.xml与应用程序功能组件 20
2．3．1 AndroidManifest的xml语法层次 20
2．3．2 <activity> — Activity（活动） 21
2．3．3 <receiver>—Intent（意图）与Broacast Receiver（广播接收） 21
2．3．4 <service>—服务 22
2．3．5 <provider>—Content Provider（内容提供者） 22
2．4　运行Android项目（启动Android模拟器） 23
2．5　详解第一个Android项目源码 25
2．6　Activity生命周期 28
2．6．1 单个Activity的生命周期 28
2．6．2 多个Activity的生命周期 32
2．6．3 Android OS管理Activity的方式 34
2．7　Android开发常见问题 34
2．7．1 Android SDK与 Google APIs创建Emulator 的区别 34
2．7．2 将Android项目导入Eclipse 35
2．7．3 在Eclipse中显示Android开发环境下常用的View窗口 37
2．7．4 在Eclipse中利用打印语句（Log）调试Android程序 38
2．7．5 在Eclipse中真机运行Android项目 39
2．7．6 设置Android Emulator模拟器系统语言为中文 39
2．7．7 切换模拟器的输入法39
2．7．8 模拟器中创建SD Card 40
2．7．9 模拟器横竖屏切换 40
2．7．10 打包Android 项目 40
2．8　本章小结 45
第3章　Android游戏开发常用的系统控件
3．1　Button 47
3．2　Layout 52
3．2．1 线性布局 52
3．2．2 相对布局 57
3.2.3 表格布局 62
3.2.4 绝对布局 66
3.2.5 单帧布局 68
3.2.6 可视化编写布局 70
3.3　ImageButton 71
3.4　EditText 74
3.5　CheckBox 76
3.6　RadioButton 79
3.7　ProgressBar 82
3.8　SeekBar 85
3.9　TabSpec与TabHost 87
3.10　ListView 91
3.10.1 ListView使用ArrayAdapter适配器 91
3.10.2 ListView使用SimpleAdapter适配器的扩展列表 93
3.10.3 为ListView自定义适配器 96
3.11　Dialog 100
3.12　系统控件常见问题 105
3.12.1 Android中常用的计量单位 105
3.12.2 Context 106
3.12.3 Resources与getResources 107
3.12.4 findViewById与 LayoutInflater 107
3.12.5 多个Activity之间跳转/退出/传递数据操作 108
3.12.6 横竖屏切换处理的三种方式 112
3.13　本章小结 114
第4章　游戏开发基础
4.1　如何快速的进入Android游戏开发 116
4.2　游戏的简单概括 118
4.3　Android游戏开发中常用的三种视图 118
4.4　View游戏框架 119
4.4.1 绘图函数onDraw 122
4.4.2 按键监听 124
4.4.3 触屏监听 128
4.5　SurfaceView游戏框架 130
4.5.1 SurfaceView游戏框架实例 130
4.5.2 刷屏的方式 135
4.5.3 SurfaceView视图添加线程 136
4.6　View 与 SurfaceView的区别 142
4.7　Canvas 画布 143
4.8　Paint 画笔148
4.9　Bitmap位图的渲染与操作 151
4.10　剪切区域 162
4.11　动画 168
4.11.1 Animation动画 168
4.11.2 自定义动画 173
4.12　游戏适屏的简述与作用 179
4.13　让游戏主角动起来 181
4.14　碰撞检测 187
4.14.1 矩形碰撞 188
4.14.2 圆形碰撞 190
4.14.3 像素碰撞 192
4.14.4 多矩形碰撞 193
4.14.5 Region碰撞检测 196
4.15　游戏音乐与音效 198
4.15.1 MediaPlayer 198
4.15.2 SoundPool 203
4.15.3 MediaPlayer与SoundPool优劣分析 207
4.16　游戏数据存储 207
4.16.1 SharedPreference 208
4.16.2 流文件存储 212
4.16.3 SQLite 218
4.17　本章小结 219
第5章　游戏开发实战演练
5.1　项目前的准备工作 221
5.2　划分游戏状态 222
5.3　游戏初始化（菜单界面） 224
5.4　游戏界面 229
5.4.1 实现滚动的背景图 230
5.4.2 实现主角以及与主角相关的元素 231
5.4.3 怪物（敌机）类的实现 236
5.5　游戏胜利与结束界面 260
5.6　游戏细节处理 261
5.6.1 游戏Back返回键处理 261
5.6.2 为游戏设置背景常亮262
5.7　本章小结 262
第6章　游戏开发提高篇
6.1　360°平滑游戏导航摇杆 264
6.2　多触点实现图片缩放 268
6.3　触屏手势识别 270
6.4　加速度传感器274
6.5　9patch工具的使用 278
6.6　代码实现截屏功能 283
6.7　效率检视工具 285
6.8　游戏视图与系统组件共同显示 288
6.9　蓝牙对战游戏 290
6.10　网络游戏开发基础 307
6.10.1 Socket 308
6.10.2 Http 313
6.11　本地化与国际化 317
6.12　本章小结 320
第7章　Box2D 物理引擎
7.1　Box2D概述 322
7.2　将Box2D类库导入Android项目中 322
7.3　物理世界与手机屏幕坐标系之间的关系 324
7.4　创建Box2D物理世界 325
7.5　创建矩形物体 327
7.6　让物体在屏幕中展现 329
7.7　创建自定义多边形物体 330
7.8　物理世界中的物体角度 331
7.9　创建圆形物体 332
7.10　多个Body的数据赋值 333
7.10.1 遍历Body 333
7.10.2 自定义类关联Body 335
7.11　设置Body坐标与给Body施加力 338
7.11.1 手动设置Body的坐标 338
7.11.2 给Body施加力 338
7.12　Body碰撞监听、筛选与Body传感器 341
7.12.1 Body碰撞接触点监听 341
7.12.2 Body碰撞筛选 342
7.13　关节 346
7.13.1 距离关节 346
7.13.2 旋转关节 348
7.13.3 齿轮关节 349
7.13.4 滑轮关节 351
7.13.5 移动关节 353
7.13.6 鼠标关节 356
7.14　通过AABB获取Body 358
7.15　物体与关节的销毁 360
7.16　本章小结 361
第8章　Box2D物理游戏实战
8.1　迷宫小球游戏实战 363
8.2　堆房子游戏实战 382
8.3　本章小结 392[1]​