內容簡介
本書主要系統地講解了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
作者簡介
李華明
暱稱: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 業界人士大為鼓舞與讚賞;