Android游戲開發(fā)大全_第1頁
Android游戲開發(fā)大全_第2頁
Android游戲開發(fā)大全_第3頁
Android游戲開發(fā)大全_第4頁
Android游戲開發(fā)大全_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Android游戲開發(fā)大全注:因內(nèi)容過長上傳受限制,本文檔只顯示部分內(nèi)容,完整版文檔請下載此文檔后留言謝謝。目錄\h第一篇Android游戲開發(fā)核心技術(shù)\h第1章Android平臺簡介\h1.1Android的來龍去脈\h1.2掀起Android的蓋頭來\h1.2.1選擇Android的理由\h1.2.2Android的應用程序框架\h1.3Android開發(fā)環(huán)境的搭建\h1.3.1SDK的下載及安裝\h1.3.2Eclipse集成開發(fā)環(huán)境的搭建\h1.3.3虛擬設備的創(chuàng)建與模擬器的運行\(zhòng)h1.3.4第一個Android程序\h1.3.5Android程序的監(jiān)控與調(diào)試\h1.4小結(jié)\h第2章Android游戲開發(fā)之前臺渲染\h2.1創(chuàng)建Android用戶界面\h2.1.1布局管理\h2.1.2常用控件及其事件處理\h2.2圖形與動畫在Android中的實現(xiàn)\h2.2.1簡單圖形的繪制\h2.2.2貼圖的藝術(shù)\h2.2.3自定義動畫的播放\h2.3Android平臺下的多媒體開發(fā)\h2.3.1音頻的播放\h2.3.2視頻的播放\h2.3.3Camera圖像采集\h2.4小結(jié)\h第3章Android游戲開發(fā)之交互式通信\h3.1Android應用程序的基本組件\h3.1.1Activity組件\h3.1.2Service組件\h3.1.3BroadcastReceiver組件\h3.1.4ContentProvider組件\h3.1.5AndroidManifest.xml文件簡介\h3.2應用程序的內(nèi)部通信\h3.2.1消息的處理者——Handler類簡介\h3.2.2使用Handler進行內(nèi)部通信\h3.3應用程序組件之間的通信\h3.3.1Intent類簡介\h3.3.2應用程序組件——IntentFilter類簡介\h3.3.3示例1:與Android系統(tǒng)組件通信\h3.3.4示例2:應用程序組件間通信示例Activity部分的開發(fā)\h3.3.5示例3:應用程序組件間通信示例Service部分的開發(fā)\h3.4小結(jié)\h第4章Android游戲開發(fā)之數(shù)據(jù)存儲和傳感器\h4.1在Android平臺上實現(xiàn)數(shù)據(jù)存儲\h4.1.1私有文件夾文件的寫入與讀取\h4.1.2讀取Resources和Assets中的文件\h4.1.3輕量級數(shù)據(jù)庫SQLite簡介\h4.1.4SQLite的使用示例\h4.1.5數(shù)據(jù)共享者——ContentProvider的使用\h4.1.6簡單的數(shù)據(jù)存儲——Preferences的使用\h4.2Android平臺下傳感器應用的開發(fā)\h4.2.1傳感器應用開發(fā)流程\h4.2.2常用傳感器簡介\h4.2.3傳感器應用開發(fā)示例\h4.2.4使用SensorSimulator模擬傳感器變化\h4.2.5使用新版本的API開發(fā)傳感器應用\h4.3小結(jié)\h第5章Android游戲開發(fā)之網(wǎng)絡編程\h5.1基于Socket套接字的網(wǎng)絡編程\h5.2基于HTTP協(xié)議的網(wǎng)絡編程\h5.2.1通過URL獲取網(wǎng)絡資源\h5.2.2在Android中解析XML\h5.3Android平臺下的GoogleMap\h5.3.1定位類GenPoint與顯示地圖類MapView的搭配使用\h5.3.2位置監(jiān)聽器——LocationListener的使用\h5.4其他網(wǎng)絡通信方式\h5.4.1使用WiFi進行開發(fā)\h5.4.2借助于藍牙(Bluetooth)技術(shù)進行開發(fā)\h5.5小結(jié)\h第6章不一樣的游戲,一樣的精彩\h6.1射擊類游戲\h6.1.1游戲玩法\h6.1.2視覺效果\h6.1.3游戲內(nèi)容設計\h6.2競速類游戲\h6.2.1游戲玩法\h6.2.2視覺效果\h6.2.3游戲內(nèi)容設計\h6.3益智類游戲\h6.3.1游戲玩法\h6.3.2視覺效果\h6.3.3游戲內(nèi)容設計\h6.4角色扮演游戲\h6.4.1游戲玩法\h6.4.2視覺效果\h6.4.3游戲內(nèi)容設計\h6.5闖關(guān)動作類游戲\h6.5.1游戲玩法\h6.5.2視覺效果\h6.5.3游戲內(nèi)容設計\h6.6冒險游戲\h6.6.1游戲玩法\h6.6.2視覺效果\h6.6.3游戲內(nèi)容設計\h6.7策略游戲\h6.7.1游戲玩法\h6.7.2視覺效果\h6.7.3游戲內(nèi)容設計\h6.8養(yǎng)成類游戲\h6.8.1游戲玩法\h6.8.2視覺效果\h6.8.3游戲內(nèi)容設計\h6.9經(jīng)營類游戲\h6.9.1游戲玩法\h6.9.2視覺效果\h6.9.3游戲內(nèi)容設計\h6.10體育類游戲\h6.10.1游戲玩法\h6.10.2視覺效果\h6.10.3游戲內(nèi)容設計\h6.11小結(jié)\h第7章游戲背后的數(shù)學與物理\h7.1編程中經(jīng)常用到的數(shù)理知識\h7.1.1數(shù)學方面\h7.1.2物理方面\h7.2物理小球在游戲中的應用\h7.2.1開發(fā)運動體Movable類的代碼\h7.2.2開發(fā)物理引擎BallThread類的代碼\h7.2.3視圖類——開發(fā)BallView類的代碼\h7.2.4繪制線程——開發(fā)DrawThread類的代碼\h7.2.5開發(fā)Activity部分的代碼\h7.3粒子系統(tǒng)\h7.3.1粒子對象類——開發(fā)粒子對象Particle類和粒子集合ParticleSet類\h7.3.2開發(fā)焰火粒子系統(tǒng)的物理引擎ParticleThread類的代碼\h7.3.3視圖類——開發(fā)視圖類ParticleView及其相關(guān)類\h7.3.4開發(fā)程序Activity部分的代碼\h7.3.5將焰火粒子系統(tǒng)改為瀑布粒子系統(tǒng)\h7.4碰撞檢測技術(shù)\h7.4.1碰撞檢測技術(shù)基礎\h7.4.2游戲中實體對象之間的碰撞檢測\h7.4.3游戲?qū)嶓w對象與環(huán)境之間的碰撞檢測\h7.5小結(jié)\h第8章游戲中的人工智能\h8.1讓怪物聰明起來——Android中的路徑搜索\h8.1.1路徑搜索示例基本框架的搭建\h8.1.2路徑搜索示例的控制面板實現(xiàn)\h8.1.3路徑搜索示例GameView的實現(xiàn)\h8.1.4深度優(yōu)先路徑搜索DFS\h8.1.5廣度優(yōu)先路徑搜索BFS\h8.1.6路徑搜索算法——Dijkstra\h8.1.7用A*算法優(yōu)化搜索\h8.2有限狀態(tài)機\h8.2.1何為有限狀態(tài)機\h8.2.2有限狀態(tài)機的簡單實現(xiàn)\h8.2.3有限狀態(tài)機的OO實現(xiàn)\h8.3小結(jié)\h第9章游戲開發(fā)小秘技\h9.1地圖編輯器與關(guān)卡設計\h9.1.1關(guān)卡地圖的重要性\h9.1.2圖片分割界面的實現(xiàn)\h9.1.3地圖設計界面的實現(xiàn)\h9.2游戲中的模糊邏輯\h9.2.1模糊的才是真實的\h9.2.2如何在Android中將游戲模糊化\h9.3游戲的基本優(yōu)化技巧\h9.3.1代碼上的小藝術(shù)\h9.3.2Android中的查找表技術(shù)\h9.3.3游戲的感覺和性能問題\h9.4小結(jié)\h第10章游戲的心臟——物理引擎\h10.1物理引擎很重要\h10.1.1什么是物理引擎\h10.1.2常見的物理引擎\h10.22D的王者JBox2D\h10.2.1基本的物理學概念\h10.2.2JBox2D中常用類的介紹\h10.3球體撞擊木塊金字塔案例\h10.3.1案例運行效果\h10.3.2案例的基本框架結(jié)構(gòu)\h10.3.3常量類——Constant\h10.3.4抽象類——MyBody\h10.3.5圓形剛體類——MyCircleColor\h10.3.6生成剛體形狀的工具類——Box2DUtil\h10.3.7顏色工具類——ColorUtil\h10.3.8主控制類——MyBox2dActivity\h10.3.9顯示界面類——GameView\h10.3.10繪制線程類——DrawThread\h10.4簡易打磚塊案例\h10.4.1一般碰撞版\h10.4.2碰撞后消失版\h10.5旋轉(zhuǎn)關(guān)節(jié)蹺蹺板案例\h10.5.1旋轉(zhuǎn)關(guān)節(jié)介紹\h10.5.2多邊形剛體類MyPolygonColor的開發(fā)\h10.5.3生成剛體形狀的工具類——Box2DUtil\h10.5.4將場景中的剛體擺放到位\h10.5.5增加旋轉(zhuǎn)關(guān)節(jié)\h10.6旋轉(zhuǎn)關(guān)節(jié)鏈條擺案例\h10.6.1案例運行效果\h10.6.2案例的機械結(jié)構(gòu)\h10.6.3主控制類——MyBox2dActivity\h10.7組合機械結(jié)構(gòu)案例\h10.7.1案例的運行效果\h10.7.2整體場景的機械結(jié)構(gòu)\h10.7.3案例的基本框架結(jié)構(gòu)\h10.7.4圓形剛體類——MyCircleColor\h10.7.5生成剛體形狀的工具類——Box2DUtil\h10.7.6主控制類——MyBox2dActivity\h10.7.7游戲界面類——GameView\h10.7.8繪制線程類——DrawThread\h10.8小結(jié)\h第11章OpenGLES應用開發(fā)基礎\h11.1OpenGLES概述及3D基本圖形繪制\h11.1.1OpenGL及OpenGLES簡介\h11.1.23D基本知識\h11.1.3使用索引的不同繪制方式\h11.1.4用索引法繪制三角形的案例\h11.1.5不使用索引數(shù)據(jù)繪制\h11.2正交投影和透視投影\h11.2.1正交投影\h11.2.2透視投影\h11.2.3兩種投影方式的原理及視口\h11.2.4兩種投影方式的案例\h11.3光照與材質(zhì)\h11.3.1光照的3種組成元素\h11.3.2定向光與定位光\h11.3.3法向量\h11.3.4材質(zhì)\h11.3.5兩種光源的案例\h11.4紋理及紋理映射\h11.4.1紋理映射基本原理\h11.4.2使用紋理映射的案例\h11.4.3幾種紋理拉伸方式\h11.4.4幾種紋理過濾方式\h11.5攝像機和霧特效\h11.5.1攝像機的設置\h11.5.2設置合理的視角\h11.5.3霧特效的開發(fā)\h11.6典型幾何體的開發(fā)\h11.6.1圓柱\h11.6.2圓錐\h11.6.3球\h11.6.4橢圓體\h11.6.5膠囊體\h11.6.6幾何體大集合\h11.7小結(jié)\h第二篇Android游戲開發(fā)實戰(zhàn)綜合案例\h第12章滾屏動作游戲——太空保衛(wèi)戰(zhàn)\h12.1游戲的背景及功能概述\h12.1.1背景概述\h12.1.2功能簡介\h12.2游戲的策劃及準備工作\h12.2.1游戲的策劃\h12.2.2Android平臺下游戲的準備工作\h12.3游戲的架構(gòu)\h12.3.1各個類的簡要介紹\h12.3.2游戲的框架簡介\h12.4輔助界面相關(guān)類的實現(xiàn)\h12.4.1主控制類——PlaneActivity的實現(xiàn)\h12.4.2歡迎界面WelcomeView類\h12.4.3其他輔助界面的介紹\h12.5游戲界面的框架設計\h12.6游戲?qū)嶓w相關(guān)類的實現(xiàn)\h12.6.1飛機Plane類的實現(xiàn)\h12.6.2敵方飛機EnemyPlane類的實現(xiàn)\h12.6.3子彈Bullet類的實現(xiàn)\h12.6.4其他相關(guān)類的實現(xiàn)\h12.7游戲界面的完善\h12.7.1地圖類Maps的實現(xiàn)\h12.7.2背景滾動類GameViewBackGroundThread的實現(xiàn)\h12.7.3物體移動線程MoveThread的實現(xiàn)\h12.7.4鍵盤監(jiān)聽線程KeyThread的實現(xiàn)\h12.7.5圖片初始化方法initBitmap的實現(xiàn)\h12.7.6繪制方法onDraw的實現(xiàn)\h12.8游戲的優(yōu)化與改進\h第13章棋牌游戲——中國象棋人機對弈\h13.1游戲的背景及功能概述\h13.1.1背景概述\h13.1.2功能介紹\h13.2游戲的策劃及準備工作\h13.2.1游戲的策劃\h13.2.2Android平臺下游戲的準備工作\h13.3游戲的架構(gòu)\h13.3.1各個類簡要介紹\h13.3.2游戲框架簡介\h13.4主控制類——Chess_DJB_Activity\h13.5輔助界面相關(guān)類\h13.6游戲界面相關(guān)類\h13.6.1游戲界面繪制類GameView\h13.6.2游戲界面常量類ViewConstant\h13.7走法引擎相關(guān)類\h13.7.1常量類Constant\h13.7.2工具類Chess_LoadUtil\h13.7.3走法引擎主類LoadUtil\h13.7.4走法的排序規(guī)則類MyComparator\h13.7.5記錄走棋步驟類StackplayChess\h13.8游戲的優(yōu)化與改進\h第14章物理傳感器游戲——小球快跑\h14.1游戲背景及功能概述\h14.1.1背景概述\h14.1.2功能簡介\h14.2游戲的策劃及準備工作\h14.2.1游戲的策劃\h14.2.2小球快跑游戲開發(fā)的準備工作\h14.3游戲的架構(gòu)\h14.3.1游戲的總體架構(gòu)\h14.3.2游戲的類結(jié)構(gòu)\h14.4主控制類——DriftBall類的開發(fā)\h14.4.1DriftBall類的代碼框架\h14.4.2DriftBall類的主要成員方法的實現(xiàn)\h14.5游戲主菜單的開發(fā)\h14.5.1歡迎界面類——WelcomeView類的代碼框架\h14.5.2WelcomeView類主要成員方法\h14.5.3WelcomeThread類的開發(fā)\h14.5.4菜單界面的用戶交互事件處理\h14.6游戲界面模塊的開發(fā)\h14.6.1游戲界面類——GameView的成員變量\h14.6.2GameView的成員方法簡介\h14.6.3游戲界面繪制線程——GameThread類的代碼框架\h14.6.4GameMenuThread類的開發(fā)\h14.6.5用戶交互事件處理\h14.7游戲中各個圖層的開發(fā)\h14.7.1地圖圖層的開發(fā)\h14.7.2其他圖層的開發(fā)與實現(xiàn)\h14.8游戲后臺邏輯的開發(fā)\h14.8.1小球的運動控制\h14.8.2小球的碰撞檢測\h14.8.3大炮相關(guān)類Cannon和Missile的開發(fā)\h14.9傳感器計算模塊的開發(fā)\h14.9.1手機姿態(tài)變化監(jiān)聽器——BallListener類的開發(fā)\h14.9.2工具類——RotateUtil類的代碼框架\h14.9.3工具類——RotateUtil類的開發(fā)\h14.10游戲的優(yōu)化與改進\h第15章塔防游戲——精靈塔防\h15.1游戲的背景及功能概述\h15.1.1背景概述\h15.1.2功能介紹\h15.2游戲的策劃及準備工作\h15.2.1游戲的策劃\h15.2.2Android平臺下游戲開發(fā)的準備工作\h15.3游戲的架構(gòu)\h15.3.1各個類的簡要介紹\h15.3.2游戲框架簡介\h15.4主控制類TafangGameActivity和數(shù)據(jù)庫類DBUtil\h15.4.1主控制類——TafangGameActivity主要框架\h15.4.2主控制類——TafangGameActivity中部分數(shù)據(jù)庫的實現(xiàn)\h15.4.3主控制類——TafangGameActivity中對話框的開發(fā)\h15.4.4數(shù)據(jù)庫類DBUtil的開發(fā)\h11.5界面相關(guān)類\h15.5.1歡迎界面WelcomeView類的介紹\h15.5.2主界面MainMenuSurfaceView類的介紹\h15.5.3音效設置界面MusicSurfaceView類的介紹\h15.5.4游戲結(jié)束界面GameOverView類和幫助界面HelpView類的介紹\h15.5.5積分榜界面HighJifenSurfaceView類的介紹\h15.6游戲界面GameView及相關(guān)類\h15.6.1精靈怪物Target類\h15.6.2箭塔SingleJianta類\h15.6.3箭Shell類\h15.6.4精靈怪物的出擊現(xiàn)場——TargetNumThread\h15.6.5箭塔控制發(fā)射線程——ShellNumThread\h15.6.6游戲地圖矩陣模擬化\h15.6.7擺放箭塔守護城池\h15.6.8游戲中的2.5D效果\h15.6.9彈指間怪物灰飛煙滅——游戲水晶\h15.7游戲的優(yōu)化和改進\h第16章策略游戲——回到戰(zhàn)國\h16.1游戲的背景及功能概述\h16.1.1背景概述\h16.1.2功能簡介\h16.2游戲的策劃及準備工作\h16.2.1游戲的策劃\h16.2.2Android平臺下游戲的準備工作\h16.3游戲的架構(gòu)\h16.3.1游戲的模塊架構(gòu)\h16.3.2游戲各個類的簡要介紹\h16.4地圖設計器的開發(fā)\h16.4.1底層地圖設計器的開發(fā)\h16.4.2上層地圖設計器的開發(fā)\h16.5Activity和游戲工具類的開發(fā)\h16.5.1主控制類——HDZGActivity的介紹\h16.5.2公式封裝類——GameFormula的介紹\h16.5.3常量工具類ConstantUtil的介紹\h16.6數(shù)據(jù)存取模塊的開發(fā)\h16.6.1城池信息以及地圖層信息的封裝類\h16.6.2數(shù)據(jù)存取相關(guān)類的介紹\h16.7英雄角色模塊的開發(fā)\h16.7.1Hero類的代碼框架\h16.7.2英雄運動線程——HeroGoThread類的開發(fā)\h16.7.3輔助線程——HeroBackDataThread類的開發(fā)\h16.8表示層界面模塊的開發(fā)\h16.8.1滾屏類——ScreenRollView類的開發(fā)\h16.8.2滾屏線程——ScreenRollThread的開發(fā)\h16.8.3游戲界面GameView的框架介紹\h16.8.4游戲界面繪制方法onDraw的介紹\h16.8.5游戲界面屏幕監(jiān)聽方法onTouch的介紹\h16.8.6游戲界面后臺線程GameViewThread的介紹\h16.9管理面板模塊的開發(fā)\h16.9.1人物屬性面板類ManPanelView的開發(fā)\h16.9.2城池管理面板類CityManageView的開發(fā)\h16.10地圖中可遇實體模塊的開發(fā)\h16.10.1繪制類——MyDrawable的開發(fā)\h16.10.2抽象類——MyMeetableDrawable的開發(fā)\h16.10.3森林類——ForestDrawable的開發(fā)\h16.10.4可遇實體對象的調(diào)用流程\h16.11英雄技能模塊的開發(fā)\h16.11.1技能抽象類——Skill的開發(fā)\h16.11.2伐木技能類——LumberSkill的開發(fā)\h16.11.3隨心步技能類——SuiXinBuSkill的開發(fā)\h16.12游戲提示模塊的開發(fā)\h16.12.1提示模塊抽象類——GameAlert的開發(fā)\h16.12.2點擊確定按鈕顯示的信息類——PlainAlert的開發(fā)\h16.12.3顯示糧草危機信息類——FoodAlert的開發(fā)\h16.12.4輔助線程HeroBackDataThread中對FoodAlert的調(diào)用\h16.13游戲的優(yōu)化與改進\h第17章體育游戲——2D迷你桌球\h17.12D桌球的背景及功能概述\h17.1.1背景概述\h17.1.2功能簡介\h17.2游戲的策劃及準備工作\h17.2.1游戲的策劃\h17.2.2Android平臺下游戲的準備工作\h17.3游戲的架構(gòu)\h17.3.1游戲的框架簡介\h17.3.2各個類的簡要介紹\h17.4公共類的實現(xiàn)\h17.4.1主控制類——GameActivity的代碼框架\h17.4.2GameActivity類主要成員變量及方法的實現(xiàn)\h17.4.3常量類——Constant的實現(xiàn)\h17.5輔助界面相關(guān)類的實現(xiàn)\h17.5.1歡迎動畫界面WelcomeView類的實現(xiàn)\h17.5.2主菜單界面MainMenuView的代碼框架\h17.5.3主界面類——MainMenuView部分成員方法的實現(xiàn)\h17.5.4主界面動畫線程類ViewDrawThread的實現(xiàn)\h17.5.5排行榜界面HighScoreView的代碼框架\h17.5.6HighScoreView類的部分方法的實現(xiàn)\h17.6游戲界面相關(guān)類的實現(xiàn)\h17.6.1游戲界面GameView類的代碼框架\h17.6.2GameView類部分成員方法的實現(xiàn)\h17.6.3鍵盤監(jiān)聽線程KeyThread類的實現(xiàn)\h17.6.4球運動的線程BallGoThread類的實現(xiàn)\h17.7情景相關(guān)類的實現(xiàn)\h17.7.1球臺Table類的實現(xiàn)\h17.7.2桌球Ball類的代碼框架\h17.7.3Ball類部分成員方法的實現(xiàn)\h17.7.4球桿Cue類的實現(xiàn)\h17.8自定義控件及工具類的實現(xiàn)\h17.8.1球與球碰撞檢測的工具類CollisionUtil的實現(xiàn)\h17.8.2定時器Timer類的實現(xiàn)\h17.8.3主菜單按鈕MainMenuButton類的實現(xiàn)\h17.8.4獲取日期的工具DateUtil類的實現(xiàn)\h17.9游戲的優(yōu)化與改進\h第18章益智游戲——3D版推箱子\h18.13D版推箱子的背景及功能概述\h18.1.1背景概述\h18.1.2功能簡介\h18.2游戲的策劃及準備工作\h18.2.1游戲的策劃\h18.2.2Android平臺下游戲開發(fā)的準備工作\h18.3游戲的架構(gòu)\h18.3.1游戲的框架簡介\h18.3.2各個類的簡要介紹\h18.4公共類的實現(xiàn)\h18.4.1主控制類——MyActivity的代碼框架\h18.4.2MyActivity類成員方法的實現(xiàn)\h18.4.3常量類Constant的實現(xiàn)\h18.5輔助界面相關(guān)類的實現(xiàn)\h18.5.1歡迎動畫界面WelcomeView類的實現(xiàn)\h18.5.2主菜單界面MainView的實現(xiàn)\h18.6游戲界面相關(guān)類\h18.6.1游戲界面MySurfaceView類的設計與實現(xiàn)\h18.6.2鍵盤監(jiān)聽線程KeyThread\h18.7自定義控件及工具類\h18.7.1縮放圖片的方法PicLoadUtil\h18.7.2主菜單上的按鈕類MainMenuButton\h18.8情景相關(guān)類的實現(xiàn)\h18.8.1機器人類的代碼框架\h18.8.2機器人類成員方法的實現(xiàn)\h18.8.3機器人組類RobotGroup類的實現(xiàn)\h18.8.4機器人組類成員方法的實現(xiàn)\h18.8.5圓面Circle類的實現(xiàn)\h18.8.6矩形紋理類TextureRect的實現(xiàn)\h18.8.7紋理矩形組類TextureRectGroup的實現(xiàn)\h18.8.8墻類Wall的實現(xiàn)\h18.8.9墻Wall類成員方法的實現(xiàn)\h18.8.10箱子Cube類的實現(xiàn)\h18.8.11箱子組CubeGroup類的實現(xiàn)\h18.8.12箱子移動CubeGo類的代碼框架\h18.8.13箱子移動CubeGo類的成員方法的實現(xiàn)\h18.8.14地板類Floor的實現(xiàn)\h18.9推箱子地圖設計器的開發(fā)\h18.10游戲的優(yōu)化與改進\h第19章物理引擎游戲——盛怒的老鼠\h19.1游戲背景及功能概述\h19.1.1游戲開發(fā)背景\h19.1.2游戲功能概述\h19.2游戲策劃及準備工作\h19.2.1游戲策劃\h19.2.2游戲開發(fā)的準備工作\h19.3游戲的框架\h19.3.1游戲主要用到的技術(shù)\h19.3.2游戲各個類的介紹\h19.3.3游戲的基本框架\h19.4公共類\h19.4.1主控制類——MyBox2dActivity\h19.4.2常量類Constant\h19.5主界面的設計與實現(xiàn)\h19.5.1鼠頭和貓頭類Taj\h19.5.2鼠頭和貓頭控制線程——TJThread\h19.5.3主界面MainMenuView\h19.5.4刷幀線程MainMenuDrawThread\h19.6工具類\h19.6.1加載及縮放圖片的工具類PicLoadUtil\h19.6.2生成剛體工具類Box2DUtil\h19.6.3聲音工具類SoundUtil\h19.7剛體相關(guān)類\h19.7.1多邊形類MyPolygonImg\h19.7.2貓頭類BodyCat\h19.7.3冰塊類BodyIce\h19.7.4木條類BodyWood\h19.7.5剛體類型枚舉類BodyType\h19.7.6剛體查詢工具類BodySearchUtil\h19.8游戲界面相關(guān)類\h19.8.1皮筋類Pijin\h19.8.2記錄分數(shù)類Score\h19.8.3刷幀線程DrawThread\h19.8.4游戲界面類GameView\h19.9游戲優(yōu)化與改進第一篇Android游戲開發(fā)核心技術(shù)第1章Android平臺簡介第2章Android游戲開發(fā)之前臺渲染第3章Android游戲開發(fā)之交互式通信第4章Android游戲開發(fā)之數(shù)據(jù)存儲和傳感器第5章Android游戲開發(fā)之網(wǎng)絡編程第6章不一樣的游戲,不一樣的體驗第7章游戲背后的數(shù)學與物理第8章游戲中的人工智能第9章游戲開發(fā)小秘技第10章游戲的心臟——物理引擎第11章OpenGLES應用開發(fā)基礎第1章Android平臺簡介Android是Google公司于2007年11月5日發(fā)布的基于Linux內(nèi)核的移動平臺,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,是一個真正開放的移動開發(fā)平臺。本章將介紹Android系統(tǒng)的起源、特點、應用程序框架以及開發(fā)環(huán)境的搭建,讓讀者對Android平臺有個初步的了解,之后將開發(fā)第一個Android程序HelloAndroid,并通過對該程序的簡單分析,帶領(lǐng)讀者步入Android開發(fā)的大門。1.1Android的來龍去脈Android的創(chuàng)始人AndyRubin是硅谷著名的“極客”,他離開Danger移動計算公司后不久便創(chuàng)立了Android公司,并開發(fā)了Android平臺,他一直希望將Android平臺打造成完全開放的移動終端平臺。之后Android公司被Google公司看中并將其收購。不久,號稱全球最大的搜索服務商Google大舉進軍移動通信市場,并推出自主品牌的移動終端產(chǎn)品。2007年11月初,Google正式宣布與其他33家手機廠商、軟硬件供應商、手機芯片供應商、移動運營商聯(lián)合組成開放手機聯(lián)盟(OpenHandsetAlliance),并發(fā)布名為Android的開放手機軟件平臺,希望建立標準化、開放式的移動電話軟件平臺,在移動行業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。1.2掀起Android的蓋頭來自從Android發(fā)布以來,越來越多的人關(guān)注Android的發(fā)展,越來越多的開發(fā)人員在Android系統(tǒng)平臺上開發(fā)應用,那是什么使Android備受青睞,什么使Android在眾多移動平臺中脫穎而出呢?1.2.1選擇Android的理由與其他手機的操作系統(tǒng)相比,Android具有如下優(yōu)點:●開放性;●平等性;●無界性;●方便性;●硬件的豐富性。下面將對以上各個優(yōu)點進行簡單介紹。1.開放性提到Android的優(yōu)勢,首先想到的一定是其真正的開放,其開放性包含底層的操作系統(tǒng)以及上層的應用程序等。Google與開放手機聯(lián)盟合作開發(fā)Android的目的就是建立標準化、開放式的移動軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。Android的開放性也同樣會使大量的程序開發(fā)人員投入到Android程序的開發(fā)中,這將為Android平臺帶來大量新的應用。2.平等性在Android的系統(tǒng)上,所有的應用程序完全平等,系統(tǒng)默認自帶的程序與自己開發(fā)的程序沒有任何區(qū)別,程序開發(fā)人員可以開發(fā)個人喜愛的應用程序來替代系統(tǒng)的程序,構(gòu)建個性化的Android手機系統(tǒng),這些功能在其他的手機平臺是沒有的。在開發(fā)之初,Android平臺就被設計成由一系列應用程序組成的平臺,所有的應用程序都運行在一個虛擬機上面。該虛擬機提供了系列應用程序之間和硬件資源通信的API。3.無界性Android平臺的無界性表現(xiàn)在應用程序之間的無界,開發(fā)人員可以很輕松地將自己開發(fā)的程序與其他應用程序進行交互,比如應用程序需要播放聲音的模塊,而正好你的手機中已經(jīng)有一個成熟的音樂播放器,此時就不需要再重復開發(fā)音樂播放功能,只需簡單地加上幾行代碼即可將成熟的音樂播放功能添加到自己的程序中。4.方便性在Android平臺中開發(fā)應用程序是非常方便的,如果對Android平臺比較熟悉,想開發(fā)一個功能全面的應用程序并不是什么難事。Android平臺為開發(fā)人員提供了大量的實用庫及方便的工具,同時也將GoogleMap等強大的功能集成了進來,只需簡單的幾行調(diào)用代碼即可將強大的地圖功能添加到自己的程序中。5.硬件的豐富性由于平臺的開放,眾多的硬件制造商推出了各種各樣的產(chǎn)品,但這些產(chǎn)品功能上的差異并不影響數(shù)據(jù)的同步與軟件的兼容,例如,原來在諾基亞手機上的應用程序,可以很輕松地被移植到摩托羅拉手機上使用,且聯(lián)系人、短信息等資料更是可以方便地轉(zhuǎn)移。1.2.2Android的應用程序框架從軟件分層的角度來說,Android平臺由應用程序、應用程序框架、Android運行時庫層以及Linux內(nèi)核共4部分構(gòu)成,本節(jié)將分別介紹各層的功能,分層結(jié)構(gòu)如圖1-1所示?!鴪D1-1Android平臺架構(gòu)圖1.應用程序?qū)颖緦拥乃袘贸绦蚨际怯肑ava編寫的,一般情況下,很多應用程序都是在同一系列的核心應用程序包中一起發(fā)布的,主要有撥號程序、瀏覽器、音樂播放器、通信錄等。該層的程序是完全平等的,開發(fā)人員可以任意將Android自帶的程序替換成自己的應用程序。2.應用程序框架層對于開發(fā)人員來說,接觸最多的就是應用程序框架層。該應用程序的框架設計簡化了組件的重用,其中任何一個應用程序都可以發(fā)布自身的功能供其他應用程序調(diào)用,這也使用戶可以很方便地替換程序的組件而不影響其他模塊的使用。當然,這種替換需要遵循框架的安全性限制。該層主要包含以下9部分,如圖1-2所示?!鴪D1-2應用程序框架●活動管理(ActivityManager)。用來管理程序的生命周期,以及提供最常用的導航回退功能?!翊翱诠芾恚╓indowManager)。用來管理所有的應用程序窗口?!駜?nèi)容管理(ContentProviders)。通過內(nèi)容管理,可以使一個應用程序訪問另一個應用程序的數(shù)據(jù),或者共享數(shù)據(jù)。●視圖管理(ViewSystem)。用來構(gòu)建應用程序的基本組件,包括列表、網(wǎng)格、按鈕、文本框,甚至是可嵌入的Web瀏覽器。●包管理(PackageManager):用來管理Android系統(tǒng)內(nèi)的程序?!耠娫捁芾恚═elephonyManager)。所有的移動設備的功能統(tǒng)一歸電話管理器管理?!褓Y源管理(ResourceManager)。資源管理器可以為應用程序提供所需要的資源,包括圖片、文本、聲音、本地字符串,甚至是布局文件?!裎恢霉芾恚↙ocationManager)。該管理器是用來提供位置服務的,如GPRS定位等?!裢ㄖ芾恚∟otificationManager)。主要對手機頂部狀態(tài)欄的管理,開發(fā)人員在開發(fā)Android程序時會經(jīng)常使用,如來短信提示、電量低提示,還有后臺運行程序的提示等。3.Android運行時庫該層包含兩部分,程序庫及Android運行時庫。程序庫為一些C/C++庫,這些庫能夠被Android系統(tǒng)中不同的應用程序調(diào)用,并通過應用程序框架為開發(fā)者提供服務。而Android運行時庫包含了Java編程語言核心庫的大部分功能,提供了程序運行時所需調(diào)用的功能函數(shù)。程序庫主要包含的功能庫如圖1-3所示?!駆ibc。是一個從BSD繼承來的標準C系統(tǒng)函數(shù)庫,專門針對移動設備優(yōu)化過的?!馦ediaFramework?;赑acketVideo公司的OpenCORE。支持多種常用音頻、視頻格式回放和錄制,并支持多種圖像文件,如MPEG-4、H.264、MP3、AAC、AMR、JPG、PNG等。●SurfaceManager。SurfaceManager主要管理多個應用程序同時執(zhí)行時,各個程序之間的顯示與存取,并且為多個應用程序提供了2D和3D圖層無縫的融合?!馭QLite。所有應用程序都可以使用的輕量級關(guān)系型數(shù)據(jù)庫引擎?!馱ebKit。是一套最新的網(wǎng)頁瀏覽器引擎。同時支持Android瀏覽器和一個可嵌入的Web視圖?!馩penGLIES。是基于OpenGLES1.0API標準來實現(xiàn)的3D繪制函數(shù)庫。該函數(shù)庫支持軟件和硬件兩種加速方式執(zhí)行。●FreeType。提供位圖(bitmap)和矢量圖(vector)兩種字體顯示?!馭GL。提供了2D圖形繪制的引擎。Android運行時庫包括核心庫及Dalivik虛擬機,如圖1-4所示。▲圖1-3程序庫框架▲圖1-4Android運行時庫●核心庫(CoreLibraries)。該核心庫包括Java語言所需要的基本函數(shù)以及Android的核心庫。與標準Java不一樣的是,系統(tǒng)為每個Android的應用程序提供了單獨的Dalvik虛擬機來執(zhí)行,即每個應用程序擁有自己單獨的線程。●Dalvik虛擬機(DalvikVirtualMachine)。大多數(shù)的虛擬機(包括JVM)都是基于棧的,而Dalvik虛擬機則是基于寄存器的,它可以支持已轉(zhuǎn)換為.dex格式的Java應用程序的運行。.dex格式是專門為Dalvik虛擬機設計的,更適合內(nèi)存和處理器速度有限的系統(tǒng)。4.Linux內(nèi)核Android平臺中操作系統(tǒng)采用的是Linux2.6內(nèi)核,其安全性、內(nèi)存管理、進程管理、網(wǎng)絡協(xié)議棧和驅(qū)動模型等基本依賴于Linux。對于程序開發(fā)人員,該層為軟件與硬件之間增加了一層抽象層,使開發(fā)過程中不必時時考慮底層硬件的細節(jié)。而對于手機開發(fā)商而言,對此層進行相應的修改即可將Android平臺運行到自己的硬件平臺之上。1.3Android開發(fā)環(huán)境的搭建本節(jié)主要講述如何構(gòu)建基于Eclipse的Android開發(fā)環(huán)境,之后對開發(fā)環(huán)境進行測試并創(chuàng)建第一個Android應用程序HelloAndroid。1.3.1SDK的下載及安裝前面已經(jīng)對Android平臺進行了簡單的介紹,從本節(jié)開始,將帶領(lǐng)讀者逐步搭建自己的開發(fā)環(huán)境,具體的步驟如下。(1)登錄到SUN官方網(wǎng)站/javase/downloads下載最新的JDK安裝程序。(2)雙擊剛剛下載的JDK安裝程序jdk-6u18-windows-i586.exe,根據(jù)提示將JDK安裝到默認目錄。(3)右鍵單擊我的電腦,依次選擇屬性/高級/環(huán)境變量,在系統(tǒng)變量中新建一個名為JAVA_HOME,值為“C:\ProgramFiles\Java\jdk1.6.0_18”的環(huán)境變量。(4)再打開Path環(huán)境變量,在最后加上“C:\ProgramFiles\Java\jdk1.6.0_18\bin;”,單擊“確定”按鈕即可。(5)到頁面下載最新的SDK,本書使用的版本是2.1,其他版本的安裝與配置方法基本相同。(6)將下載好的SDK壓縮包解壓到C盤根目錄下,如圖1-5所示?!鴪D1-5AndroidSDK安裝環(huán)境(7)右鍵單擊我的電腦,依次選擇屬性/高級/環(huán)境變量,打開Path系統(tǒng)環(huán)境變量,在其最后加上SDK的解壓目錄中的tools目錄“C:\android-sdk-windows\tools”,單擊“確定”按鈕完成配置,如圖1-6所示。1.3.2Eclipse集成開發(fā)環(huán)境的搭建上一小節(jié)已經(jīng)講解了SDK的安裝與配置,本小節(jié)將帶領(lǐng)讀者構(gòu)建基于Eclipse的集成開發(fā)環(huán)境,具體步驟如下。(1)讀者只需登錄到/downloads/即可下載最新版本的Eclipse安裝程序,本書采用的版本是3.5.1。(2)將下載好的Eclipse安裝程序解壓到C盤根目錄下,如圖1-7所示。(3)雙擊C:\eclipse目錄下的eclipse.exe文件,運行Eclipse,再依次單擊菜單Help/InstallNewSoftware項,如圖1-8所示?!鴪D1-6SDK環(huán)境變量配置▲圖1-7Eclipse安裝目錄▲圖1-8Eclipse的軟件安裝(4)單擊彈出的Install界面中的“Add”按鈕,在Name欄中輸入任意的名字,并在Location欄中輸入ADT的下載地址/android/eclipse/,如圖1-9所示?!鴪D1-9填寫ADT地址提示如果輸入的地址不能正常下載ADT,讀者可以嘗試將/android/eclipse/改為/android/eclipse/。如果出現(xiàn)下載的ADT與已經(jīng)安裝的SDK版本不兼容的情況,可以手動下載ADT壓縮包,然后單擊“Archive”按鈕選擇手動下載ADT壓縮文件即可安裝,如圖1-10所示?!鴪D1-10選擇ADT壓縮文件(5)在Install界面上選中“DeveloperTools”并單擊“Next”按鈕,如圖1-11所示?!鴪D1-11選擇DevelpoerTools(6)在彈出的界面中,直接單擊“Finish”按鈕,如圖1-12所示。Eclipse將彈出提示窗口,單擊“Yes”按鈕,系統(tǒng)將自動重啟Eclipse,到此為止已經(jīng)完成ADT的安裝。(7)重啟Eclipse后,依次選擇Window/Preferences項,如圖1-13所示。▲圖1-12ADT安裝完成界面▲圖1-13選擇“Preferences”菜單(8)在彈出的窗口中選擇左側(cè)的“Android”,然后通過單擊右側(cè)的“Browse”按鈕來選擇SDK的安裝目錄,單擊“OK”按鈕完成配置,如圖1-14所示。1.3.3虛擬設備的創(chuàng)建與模擬器的運行前幾小節(jié)已經(jīng)完成了Eclipse集成環(huán)境的搭建工作,但在運行模擬器前還需要創(chuàng)建AVD(AndroidVirtualDevice,Android虛擬設備)。AVD實質(zhì)上是用來描述模擬器屬性的,有了AVD開發(fā)人員可以為自己的模擬器進行必要的設置,如屏幕尺寸、內(nèi)存等。本節(jié)將運用之前搭建好的Eclipse環(huán)境創(chuàng)建虛擬設備并運行模擬器,具體步驟如下。(1)在系統(tǒng)的開始菜單中單擊“運行”按鈕,在彈出的窗口中輸入“cmd”進入命令行,如圖1-15所示?!鴪D1-14Preferences配置(2)通過cd命令導航到android的安裝目錄下的tools下,并通過androidlisttarget命令來顯示當前可用的目標機,如圖1-16所示?!鴪D1-15啟動cmd命令行▲圖1-16當前可用的目標機(3)然后通過androidcreateavd--nameandroid21--target6命令創(chuàng)建一個名為android21、目標機id為6的AVD,創(chuàng)建的AVD默認存放在我的文檔下,而Android的AVD并不支持中文目錄,可以通過配置ANDROID_SDK_HOME環(huán)境變量來指定所創(chuàng)建的AVD的存放位置。提示除了使用命令行方式來創(chuàng)建AVD外,還可以使用Eclipse自帶的AVDManager來創(chuàng)建。在Eclipse中依次選擇“Window/AndroidSDKandAVDManager”打開AVD管理界面,如圖1-17和圖1-18所示;在AVD管理界面中不僅可以創(chuàng)建AVD,還可以對已經(jīng)存在的AVD進行管理?!鴪D1-17打開AVD管理器▲圖1-18AVD管理界面(4)在cmd命令行中導航到android的tools目錄后輸入emulator-avdandroid21命令啟動Android模擬器,如果安裝和配置正確的話,將出現(xiàn)如圖1-19所示的模擬器界面?!鴪D1-19Android2.1模擬器效果圖提示運行模擬器時可能會很慢,有時甚至可能達到幾分鐘時間,如果沒有報錯,請讀者耐心等待。1.3.4第一個Android程序前面已經(jīng)對Android的開發(fā)環(huán)境和模擬器進行配置,本小節(jié)將帶領(lǐng)讀者構(gòu)建第一個Android程序并對該程序進行簡單的講解。1.創(chuàng)建第一個Android應用程序(1)啟動Eclipse,依次選擇“File/New/Other…Eclipse”將彈出創(chuàng)建項目的窗口,如圖1-20所示。(2)選擇“AndroidProject”,單擊“Next”按鈕,將彈出填寫項目信息的界面,如圖1-21所示?!鴪D1-20創(chuàng)建項目界面▲圖1-21填寫項目信息(3)填寫如圖1-21所示的信息后單擊“Finish”按鈕即可完成項目的創(chuàng)建。創(chuàng)建后可在PackageExplorer窗口中觀察到項目的目錄結(jié)構(gòu),如圖1-22所示。(4)在項目名上單擊鼠標右鍵,然后依次選擇“RunAs/AndroidApplication”即可運行剛才創(chuàng)建的HelloAndroid項目,運行效果如圖1-23所示。提示因為有很多程序或者游戲是橫屏模式的,所以在程序調(diào)試過程中,可能需要將模擬器切換成橫屏模式,讀者可以通過使用快捷鍵Ctrl+F12來切換模擬器的橫豎屏模式,HelloAndroid程序在橫屏模擬器中運行效果如圖1-24所示?!鴪D1-22HelloAndroid項目目錄結(jié)構(gòu)▲圖1-23HelloAndroid項目豎屏效果圖▲圖1-24HelloAndroid項目橫屏效果圖2.HelloAndroid的簡單講解通過前面的學習,讀者已經(jīng)能夠創(chuàng)建并運行簡單的Android程序了,但可能對Android項目還不夠了解,接下來將通過對HelloAndroid程序的詳細介紹使讀者了解Android項目的目錄結(jié)構(gòu)以及HelloAndroid的運行機理。(1)先來看看HelloAndroid項目中各個目錄和文件的作用?!駍rc目錄,src目錄用來存放應用程序中所有的源代碼,代碼的源文件一般是存放在相應的包下面,在開發(fā)Android應用程序時,大部分時間都是在編寫src中的源代碼。●gen目錄,該目錄下一般只有一個文件,即R文件。該文件是由ADT自動產(chǎn)生的,存放的是應用程序中所使用的全部資源文件的ID,在應用程序開發(fā)過程中只是使用R文件,一般不需人工修改該文件?!馎ndroid2.1目錄。該目錄存放的是項目所需要的支持.jar包?!馻ssets目錄。該目錄存放應用程序中使用的外部資源文件,程序中可以通過輸入/輸出流對該目錄中的文件進行讀寫。●res資源目錄:該目錄下有多個目錄,分別用來存放程序中用到的圖片、界面布局文件及XML格式的描述文件?!馎ndroidManifest.xml。該文件是整個程序的系統(tǒng)控制文件,是每個應用程序都不可缺少的。其描述了應用程序有哪些組件、哪些資源、哪些權(quán)限等。(2)AndroidManifest.xml文件是該項目的系統(tǒng)控制文件,該文件的代碼如下。代碼位置:見隨書光盤中源代碼/第1章/Sample_1_1目錄下的AndroidManifest.xml?!竦?~5行定義了程序的版本、編碼方式、用到的架構(gòu)以及該程序所在的包與版本號?!竦?行定義了程序在手機上的顯示圖標及顯示名稱?!竦?~14行定義了一個名為HelloAndroid的Activity以及該Activity能夠接受的Intent。(3)main.xml是該項目的布局文件,其代碼如下。代碼位置:見隨書光盤中源代碼/第1章/Sample_1_1/res/Layout目錄下的main.xml?!竦?行定義了布局方式為LinearLayout,且左右和上下的填充方式為fill_parent?!竦?行中向該布局中添加了一個TextView控件,其寬度和高度模式分別為fill_parent、wrap_content,在TextView控件顯示的內(nèi)容為string.xml中的hello的內(nèi)容。(4)項目的主類HelloAndroid.java的代碼如下。代碼位置:見隨書光盤中源代碼/第1章/Sample_1_1/src/wyf/ytl目錄下的HelloAndroid.java?!竦?行是對繼承自Activity子類的聲明。●第6~9行重寫了Activity的onCreate回調(diào)方法,在onCreate方法中先調(diào)用基類的onCreate方法,然后指定用戶界面為R.layout.main,對應的文件為res/layout/main.xml。1.3.5Android程序的監(jiān)控與調(diào)試前面幾個小節(jié)已經(jīng)對Android應用程序的創(chuàng)建進行了詳細講解,本小節(jié)將介紹如何通過DDMS來監(jiān)控Android應用程序的運行以及如何調(diào)試Android程序。在調(diào)試過程中使用了android.util.log類,該類簡單易用。監(jiān)控與調(diào)試詳細步驟如下。(1)打開剛剛建立的項目,找到HelloAndroid.java文件,在第8行super.onCreate(savedInstanceState);之后添加“Log.d("TAG","Thisismessage!");”語句。(2)在項目名上單擊鼠標右鍵,然后依次選擇“RunAs/AndroidApplication”運行該項目。(3)依次單擊Eclipse右上角的OpenPerspective/Other,如圖1-25所示。Eclipse將彈出“OpenPerspective”對話框,如圖1-26所示?!鴪D1-25打開OpenPerspective窗口▲圖1-26切換到DDMS視圖(4)單擊“OK”按鈕后將Eclipse切換到DDMS視角,如圖1-27所示。LogCat顯示在屏幕的下方,系統(tǒng)中所有的日志都將出現(xiàn)在LogCat中,通過對LogCat的觀察可以詳細了解Android程序運行的過程?!鴪D1-27LogCat界面提示在程序的開發(fā)和調(diào)試過程中,少不了對文本的輸出,而在Android程序的開發(fā)中,建議使用Log類來打印需要打印的文本。(5)在圖1-27中可以看到在程序中添加的日志輸出,這樣在程序的開發(fā)過程中可以隨時使用Log類來打印需要打印的信息,而當LogCat中日志過多時,可以使用過濾器Filter通過對tag進行過濾來篩選log。1.4小結(jié)本章介紹了Android平臺的來源及優(yōu)點,并詳細介紹了在Eclipse中如何構(gòu)建Android的開發(fā)環(huán)境,最后創(chuàng)建了第一個Android的應用程序。通過本章的學習,讀者應該已經(jīng)對Android平臺下應用程序的開發(fā)步驟有了初步的了解。第2章Android游戲開發(fā)之前臺渲染在正式動手開發(fā)游戲之前,有必要先對Android的前臺渲染技術(shù)進行學習,掌握了這些知識,才能更好地學習游戲的開發(fā)。本章將對Android游戲開發(fā)的前臺渲染技術(shù)進行詳細介紹,為以后各章節(jié)的游戲開發(fā)做好技術(shù)儲備。2.1創(chuàng)建Android用戶界面任何程序都少不了用戶界面,游戲也不例外,本節(jié)將對Android應用中常用的用戶界面、布局管理以及簡單的事件處理進行介紹。2.1.1布局管理Android的控件有很多種,需要使用Layout對這些控件進行管理,以使這些控件顯示在屏幕的正確位置。AndroidSDK中已經(jīng)內(nèi)置了5種布局模型,開發(fā)人員通過對這幾種布局模型進行組合便可構(gòu)建出各種復雜的用戶界面。下面將對這5種布局模型進行詳細的講解。1.線性布局線性布局(LinearLayout)是Android應用程序中最簡單的布局方式,有水平和豎直兩種排列方式,通過對參數(shù)的設置可以控制各個控件在布局中的相對大小。接下來將通過一個簡單的例子來介紹線性布局的使用方法,該例子最終的效果如圖2-1所示,其開發(fā)步驟如下?!鴪D2-1線性布局(1)創(chuàng)建一個新項目Sample_2_1,然后在res/layout下創(chuàng)建XML布局文件my_layout.xml,并在其中輸入如下代碼。代碼位置:見隨書光盤中源代碼/第2章/Sample_2_1/res/layout目錄下的my_layout.xml?!竦?~6行是一個垂直的線性布局,寬度填滿整個屏幕,高度自動適應子控件的大小。●第7~11行向線性布局中添加一個按鈕控件,寬度和高度全部填滿父控件?!竦?2~16行又向外層的線性布局中添加一個水平的線性布局,高度和寬度全部適應子控件?!竦?7~26行往水平的線性控件中依次添加兩個按鈕控件。(2)打開src/wyf/ytl目錄下的Sample_2_1.java,將其代碼修改為如下代碼。代碼位置:見隨書光盤中源代碼/第2章/Sample_2_1/src/wyf/ytl目錄下的Sample_2_1.java?!竦?~8行重寫Activity的onCreate方法,該方法在Activity創(chuàng)建時被系統(tǒng)調(diào)用。●第9行指定當前顯示的主界面為my_layout.xml。提示為了不干擾讀者的思路,本章例子中按鈕上的文字全部寫在程序中,讀者可以將這些文字提取到strings.xml文件中,為以后程序的維護與修改提供便利。2.表格布局表格布局(TableLayout)是以行列的形式來管理子控件的,在表格布局中的每一行可以是一個View控件或者是一個TableRow控件。而TableRow控件中還可以添加子控件。下面通過一個簡單的例子來說明表格布局的使用方法,運行效果如圖2-2所示,其開發(fā)步驟如下?!鴪D2-2表格布局(1)創(chuàng)建一個新項目Sample_2_2,然后在res/layout下創(chuàng)建XML布局文件my_layout.xml,并在其中輸入如下代碼。代碼位置:見隨書光盤中源代碼/第2章/Sample_2_2/res/layout目錄下的my_layout.xml?!竦?~5行定義了一個寬高全部填滿屏幕的TableLayout?!竦?~11行向TableLayout中的第一行添加一個TextView控件,并且設置對齊方式為居中?!竦?2~27行添加TableRow控件并繼續(xù)添加兩個自適應寬高的TextView控件。●第28~41行再向TableLayout中添加一行,并直接向該行中添加兩列,每列一個按鈕。提示表格布局中,每行可以是其他控件,而每列也可以是其他控件,在程序的開發(fā)過程中常常使用表格布局來排版。(2)和前面的例子一樣,編寫完布局文件后,應該將該布局文件設為當前顯示的用戶界面,設置方法與線性布局的例子一樣,因本書篇幅所限,就不再贅述,讀者可以參考線性布局的例子自行更改。3.相對布局相對布局(RelativeLayout)也比較簡單,其子控件是根據(jù)所設置的參照控件來進行布局的,設置的參照控件可以是父控件,也可以是其他的子控件。下面通過一個簡單的例子來介紹相對布局的使用方法,該例子運行的效果如圖2-3所示,其開發(fā)步驟如下。(1)創(chuàng)建項目Sample_2_3,在res/layout下添加布局文件my_layout.xml,代碼如下。▲圖2-3相對布局代碼位置:見隨書光盤中源代碼/第2章/Sample_2_3/res/layout目錄下的my_layout.xml?!裨诘?~5行定義了一個相對布局,寬高全部填滿父控件,即填滿整個屏幕。●第6~12行定義了一個參照按鈕控件,寬高自適應,位置為父控件的正中間?!竦?4~22行添加一個按鈕控件,寬高自適應,位于參照控件的左上方?!竦?3~31行繼續(xù)添加一個按鈕控件,寬高仍然是自適應,位于參照控件的右下方。(2)接下來是更改Sample_2_3.java源代碼,將剛剛編寫的布局設為當前用戶界面,設置方法同線性布局的例子一樣,在此不再贅述,讀者可查看隨書光盤中源代碼/第2章/Sample_2_3/src/wyf/ytl下的Sample_2_3.java文件。4.單幀布局單幀布局的使用方法更為簡單,不需要任何特殊的配置,布局中的所有控件都被放置在布局的左上角。下面的例子是將3個ImageView控件添加到一個單幀布局中,效果如圖2-4所示,其開發(fā)步驟如下?!鴪D2-4單幀布局(1)創(chuàng)建一個名為Sample_2_4的新項目,在該項目的res/layout下添加名為my_layout.xml的布局文件,其代碼如下。代碼位置:見隨書光盤中源代碼/第2章/Sample_2_4/res/layout目錄下的my_layout.xml。●在第2~5行定義了一個單幀布局,寬高全部填滿父控件,即填滿整個屏幕?!竦?~23行向單幀布局中順序添加3個ImageView控件。這些控件將全部對齊到布局的左上角,ImageView控件的android:src="@drawable/big"屬性設置為res/drawable-mdpi下的圖片文件。提示Android平臺中,圖片等資源文件不支持大寫字母,讀者如希望使自己的資源圖片名稱更簡潔、清晰,可以使用下劃線來分割資源名中的單詞。(2)最后,同樣是將剛編寫的單幀布局設為當前顯示的用戶界面,設置方法同前面的例子完全相同,讀者可以自行開發(fā)。5.坐標布局下面介紹最后一個布局——坐標布局。該布局在程序開發(fā)中應用得較多,其中所有控件的位置坐標是直接指定的,這樣屏幕中的控件位置完全由自己控制,增強了靈活性,下面的例子介紹了該布局的使用方法,運行效果如圖2-5所示?!鴪D2-5坐標布局(1)創(chuàng)建新項目Sample_2_5,在res/layout下創(chuàng)建my_layout.xml,其代碼如下。代碼位置:見隨書光盤中源代碼/第2章/Sample_2_5/res/layout目錄下的my_layout.xml?!竦?~5行定義了一個坐標布局,并設置其填滿整個屏幕。●第6~35行向坐標布局中添加4個控件,通過layout_x和layout_y兩個屬性確定控件的位置。(2)設置當前顯示的用戶界面為剛編寫的布局界面,設置的方法與前面的例子相同,讀者可查看隨書光盤中源代碼/第2章/Sample_2_5/src/wyf/ytl下的Sample_2_5.java文件。2.1.2常用控件及其事件處理Android中提供了大量豐富多彩的常用控件,Android平臺已經(jīng)完整地實現(xiàn)了這些控件功能,開發(fā)人員只需簡單的幾句調(diào)用或參數(shù)設置的語句即可用其構(gòu)建完整的用戶界面。Android中控件的使用方法一般有兩種,一種是在XML中配置,而另一種是在Java程序中直接調(diào)用。在游戲開發(fā)過程中,很少使用在XML中配置的方法,一般都是在Java源代碼中直接使用。常用的控件有TextView、ImageView、CheckBox、RadioButton、Button、ImageButton、EditText、ToggleButton、AnalogClock、DigitalClock等。這些控件的使用方法基本相同,接下來將通過一個簡單的例子來講解控件的使用方法以及Android平臺的事件處理,具體開發(fā)步驟如下。(1)創(chuàng)建一個名為Sample_2_6的新項目。(2)打開main.xml布局文件,將其中的代碼替換成下列代碼。代碼位置:見隨書光盤中源代碼/第2章/Sample_2_6/res/layout目錄下的main.xml?!竦?~5行定義了一個垂直的線性布局,寬高全部填充滿屏幕?!竦?~12行向線性布局中添加一個文本控件,寬度填滿父控件,高度自適應子控件,用于顯示被單擊的按鈕。●之后依次向布局中添加3種按鈕,每個控件的寬度和高度全部設置為自適應子控件,并指定其控件的ID,使Java程序中可以找到該控件。提示該程序中用到了圖片資源,在使用圖片之前應該先將用到的圖片資源放到Sample_2_6/res/drawable-mdpi文件夾下。(3)打開系統(tǒng)自動創(chuàng)建的Sample_2_6.java文件,將其內(nèi)容改為如下代碼。代碼位置:見隨書光盤中源代碼/第2章/Sample_2_6/src/wyf/ytl目錄下的Sample_2_6.java。●第11~14行聲明了3種按鈕及文本控件的引用。●第19行是將main布局文件設置為當前顯示的View?!竦?0~23行通過布局文件中控件的ID得到各個控件的引用?!竦?4~26行為各個控件添加監(jiān)聽?!竦?8~38行重寫了事件監(jiān)聽器的回調(diào)方法。當單擊不同控件時分別做不同的處理。(4)運行本例子,將看到如圖2-6所示的效果,當用戶單擊按鈕時,文本的內(nèi)容會隨之改變?!鴪D2-6控件及事件監(jiān)聽提示在此通過3種按鈕控件來講解Android中控件的使用方法以及控件事件的處理方法,Android中各個控件的使用方法基本相同,讀者可以模仿本例學習其他控件的使用。2.2圖形與動畫在Android中的實現(xiàn)程序開發(fā)過程中,圖形、動畫是必不可少的,本節(jié)將詳細講解圖形、動畫在Android中的實現(xiàn),通過對本節(jié)的學習,使讀者能夠構(gòu)建出簡單的圖形用戶界面。2.2.1簡單圖形的繪制在Android游戲的開發(fā)中,時時都需要繪制圖形、圖片,接下來將通過一個繪制圖形的例子,讓讀者理解Android中圖形繪制的機理,其開發(fā)步驟如下。(1)創(chuàng)建一個新項目Sample_2_7,然后在src/wyf/ytl目錄下創(chuàng)建文件MyView.java,并在其中輸入下面的代碼。代碼位置:見隨書光盤中源代碼/第2章/Sample_2_7/src/wyf/ytl目錄下的MyView.java?!竦?0~12行為該類的構(gòu)造器,View下構(gòu)造器有3種重載方式,如需在XML中配置應用該View,必須實現(xiàn)該構(gòu)造器?!竦?3行重寫負責繪制的onDraw方法,第15行繪制View的背景色為黑色,而第16~17行創(chuàng)建并設置畫筆。●第18行向View中繪制矩形,drawRect的前4個參數(shù)分別為左上角的x、y和右下角的x、y?!竦?9行向View中繪制字符串,需要注意的是,之后的兩個參數(shù)為字符串所占矩形的左下角x、y?!竦?0~21行先創(chuàng)建一個矩形對象,然后根據(jù)矩形對象的大小和位置繪制弧形,給出起始的角度和終止的角度?!竦?2行繪制直線,前4個參數(shù)為起始點的x、y以及終點的x、y。第23~24行同樣創(chuàng)建一個矩形對象,并根據(jù)矩形繪制圓。(2)將res/layout下的main.xml文件的代碼改為如下代碼。代碼位置:見隨書光盤中源代碼/第2章/Sample_2_7/res/layout目錄下的main.xml。說明代碼的第7~10行在垂直的線性布局中添加自定義的View,并為它指定ID,寬度和高度全部填充父控件。(3)在模擬器中運行該項目,觀察的效果如圖2-7所示。提示在XML中配置自定義的View需要使用全稱類名,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論