歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

基于Android的益智游戲的設(shè)計與實現(xiàn)本科生畢業(yè)設(shè)計.doc

  • 資源ID:116685072       資源大?。?span id="skj0pq1" class="font-tahoma">1.10MB        全文頁數(shù):38頁
  • 資源格式: DOC        下載積分:20積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要20積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

基于Android的益智游戲的設(shè)計與實現(xiàn)本科生畢業(yè)設(shè)計.doc

南陽理工學(xué)院本科生畢業(yè)設(shè)計(論文)基于Android的益智游戲的設(shè)計與實現(xiàn)Design and Research of Developmental game Based on Android總 計:畢業(yè)設(shè)計(論文) 31頁表 格: 5個圖 片: 14個基于Android的益智游戲的設(shè)計與實現(xiàn)南 陽 理 工 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(論文)基于Android的益智游戲的設(shè)計與實現(xiàn)Design and Research of Developmental game Based on Android南陽理工學(xué)院Nanyang Institute of Technology畢業(yè)設(shè)計(論文)原創(chuàng)性聲明和使用授權(quán)說明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(論文),是我個人在指導(dǎo)教師的指導(dǎo)下進行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包含我為獲得 及其它教育機構(gòu)的學(xué)位或?qū)W歷而使用過的材料。對本研究提供過幫助和做出過貢獻的個人或集體,均已在文中作了明確的說明并表示了謝意。作 者 簽 名: 日 期: 指導(dǎo)教師簽名: 日期: 使用授權(quán)說明本人完全了解XX大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝 ⒖s印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)校可以公布論文的部分或全部內(nèi)容。作者簽名: 日 期: 基于Android的益智游戲的設(shè)計與實現(xiàn)軟件工程 陳兵摘 要 在國內(nèi)外,android的前景十分廣闊,尤其是這個平臺的游戲開發(fā)更是前途不可限量。1976年Gremlin平臺推出了一款經(jīng)典街機游戲Blockade, 21年后諾基亞基于這個創(chuàng)意推出了世界上第一款最受歡迎的手機游戲貪吃蛇從而開啟了手機游戲發(fā)展之先河。發(fā)展到現(xiàn)在,3G手機游戲已經(jīng)成為當(dāng)今移動游戲領(lǐng)域的主流,Android作為這個時代的弄潮兒正以燎原之勢蔓延開來。以仙劍為代表的手機RPG游戲已漸漸退出舞臺,現(xiàn)在老少皆宜的益智類游戲慢慢占據(jù)著主流,本論文研究的游戲正是這樣一款游戲,Q版的游戲畫面風(fēng)格和簡單易懂的操作適合于任何年齡段的玩家。航空帝國除采用Android平臺的四大組件,涉及到自定義View中畫圖的一些方法和技巧是本游戲的重點,調(diào)用Android系統(tǒng)畫圖的API及自己實現(xiàn)的相應(yīng)算法,再加上漂亮的圖片足以實現(xiàn)幾乎任何炫酷的效果。有人說任何一個智能手機用戶都是一個潛在的游戲玩家,我想搭乘Android的順風(fēng)車,手機游戲開發(fā)必將大有作為。關(guān)鍵詞 Android;手機游戲;3G;益智類游戲;老少皆宜;Design and Research of Developmental game Based on AndroidSoftware Engineering MajorChen BingAbstract: At home and abroad,the Android has broad prospects,especially in the platform game developers is limitless.In 1976 the Gremlin platform launched a classic arcade game based on the Nokia Blockade,21 creative has launched the worlds first and most popular mobile phone game Snake,thereby opening the mobile phone game development of precedent.Until now,3G mobile phone games have become todays mobile phone game of the mainstream,Android as the era of beach-goers must borrow wind smooth bright.In “the immortal sword” as the representative of the mobile phone RPG game has gradually quit the stage,now occupying the main puzzle game slowly,this paper studies the game is just a game,Q version of the game screen style and simple and easy operation is stuitable for any age game player. Empire in addition to the Android platform air four components, involve custom View drawing some methods and techniques is the focus of the game, called Android system drawing of the API and realize the algorithm, combined with beautiful pictures to achieve virtually any cool effect. People say that any one of the intelligent mobile phone user is a potential game player, I want to take the Android ride, mobile phone game development will accomplish much.Key words: Mobile Phone Game;3G; Developmental game; yang and old;目 錄1 緒論11.1 背景11.2 Android的崛起11.3 國內(nèi)外研究現(xiàn)狀21.4 項目研究的主要內(nèi)容31.5 本章小結(jié)32 Android的開發(fā)環(huán)境32.1 Android操作系統(tǒng)32.2 Android開發(fā)環(huán)境32.3 Android開發(fā)環(huán)境變量的配置32.3.1 JDK的配置32.3.2 SDK的配置52.4 Eclipse的配置52.5 本章小結(jié)63 Android應(yīng)用程序核心63.1 應(yīng)用程序基礎(chǔ)63.2 應(yīng)用程序組件73.2.1 Acitivity73.2.2 Service83.2.3 BroadcastReciver93.2.4 ContentProvider103.3 本章小結(jié)114 項目相關(guān)技術(shù)124.1 地圖的滑動124.2 MusicPlayer134.3 本游戲的核心類GameEngine154.4 相關(guān)算法研究164.4.1 游戲資源進度的加載164.4.2 郵件分頁顯示效果的實現(xiàn)174.4.3 玩家排名列表的實現(xiàn)184.4.4 碰撞檢測184.4.5 按每行指定長度畫字符串184.4.6 根據(jù)一串連續(xù)的數(shù)字圖片,畫出任何數(shù)字194.4.7 圖片的翻轉(zhuǎn)和縮放204.5 本章小結(jié)205 系統(tǒng)測試與運行效果截圖215.1 選擇方向界面215.2 游戲主界面215.2.1 人物信息225.2.2 音樂音效設(shè)置225.2.3 郵件列表225.2.4 照相235.2.5 商店信息235.2.6 飛機列表245.2.7 航班列表245.2.8 好友列表256 游戲基本數(shù)據(jù)256.1 飛機解鎖數(shù)據(jù)256.2 建筑解鎖數(shù)據(jù)266.3 機場解鎖數(shù)據(jù)266.4 飛機所有數(shù)據(jù)27結(jié)束語29參考文獻30致謝311 緒論1.1 背景3G(第三代數(shù)字通訊技術(shù))正離我們的生活越來越近,它的到來必將掀起一陣無線通訊的新浪潮,3G是向未來個人通信演進的一個重要發(fā)展階段,具有里程碑和劃時代的意義。說到3G不能不談到Android,1Android是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)。它包括一個操作系統(tǒng),中間件和一些重要的應(yīng)用程序。它采用軟件堆層(Software Stack,又名軟件疊層)的架構(gòu),主要分為三部分。底層以Linux內(nèi)核工作為基礎(chǔ),由C語言開發(fā),只提供基本功能;中間層包括函數(shù)庫Library和Dalvik虛擬機,由C+開發(fā)。最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙,號稱是首個為移動終端打造的真正開放和完整的移動軟件。這里,可以把android看作是一個類似于windows的操作系統(tǒng)。學(xué)習(xí)android平臺下的軟件開發(fā)正如以前學(xué)習(xí)windows平臺下的軟件開發(fā)一樣。1在國內(nèi),android的前景十分廣闊,國內(nèi)很多的廠商和運營商也紛紛加入了android陣營,包括中國移動,中國聯(lián)通,華為通訊,聯(lián)想等大企業(yè)。同時android應(yīng)用的范圍不僅僅在手機,國內(nèi)一些廠家也陸續(xù)推出了采用android系統(tǒng)的MID產(chǎn)品,比較著名的包括由Rockchip和藍魔推出的同時具備高清播放和智能系統(tǒng)的音悅匯W7,我們可以預(yù)見android也將會被廣泛應(yīng)用在國產(chǎn)智能上網(wǎng)設(shè)備上,將進一步擴大Andorid系統(tǒng)的應(yīng)用范圍。1.2 Android的崛起【2】Android操作系統(tǒng)是Google最具殺傷力的武器之一。蘋果以其天才的創(chuàng)新,使得iphone在全球迅速擁有了數(shù)百萬忠實粉絲,而Android作為第一個完整的,開放,免費的手機平臺,使開發(fā)者在為其開發(fā)程序時擁有更大的自由。與Windows,Symbian等廠商不同的是,Android操作系統(tǒng)免費向開發(fā)人員提供,這樣可節(jié)省近三成的成本,得到了眾多廠商和開發(fā)者的擁護?!?】最早進入Android市場的宏達已經(jīng)陸續(xù)在一年內(nèi)推出了G1,Magic,Hero,Tatto等4款手機,三星也在2010年推出了Galaxyi7500,連摩托羅拉也推出了新款A(yù)ndroid手機Cliq,中國移動也以Android為基礎(chǔ)開發(fā)了Ophone平臺。這些發(fā)展證明Android已成為只能手機市場的重要發(fā)展趨勢。32010年是android平臺飛速發(fā)展的一年。據(jù)報道顯示,2011年8月Android已占據(jù)了全球智能手機市場的半壁江山;而作為世界上零售領(lǐng)域最龐大的智能手機賣家蘋果公司,也以其iOS操作系統(tǒng)控制了五分之一的市場。換言之,Android和iOS加起來在全球智能手機市場上占據(jù)了三分之二的絕大多數(shù)市場份額。Android已經(jīng)在智能手機操作系統(tǒng)上占據(jù)著主導(dǎo)地位。這不難解釋,畢竟這樣一個完全免費并開放源代碼的平臺對于許多制造商來說都極具吸引力。包括HTC、Samsung、Acer、Sony Ericsson、LG、Motorola等等一系列廠商都對其投入了極大地關(guān)注和合作。3因此,2011年6月Google宣稱其每天激活50萬Android設(shè)備,我們對這一消息并不會感到十分吃驚。這一數(shù)據(jù)雖然也包括平板電腦在內(nèi),但即便是這樣,它也仍然非常可觀。它不僅僅顯示了Android在制造商和消費者間的普及度,同時還標(biāo)志著智能手機正在成為如今社會不可缺少的一部分。Andy是一個有遠見的人,早在2003年他就看到了Android2005年的起步和被Google的收購,也看到了系統(tǒng)的進步和新的機型的快速的發(fā)布。所有的這一切都讓我們相信,Android走向世界第一移動操作系統(tǒng)的寶座的步伐是勢不可擋的,Android可能真的會繼續(xù)帶著我們走向移動設(shè)備夢想的彼岸。1.3 國內(nèi)外研究現(xiàn)狀A(yù)ndroid 包括操作系統(tǒng)、用戶界面和應(yīng)用程序 移動電話工作所需的全部軟件,而且不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。Google與開放手機聯(lián)盟合作開發(fā)了 Android,這個聯(lián)盟由包括中國移動、摩托羅拉、高通、宏達電和 T-Mobile 在內(nèi)的 30 多家技術(shù)和無線應(yīng)用的領(lǐng)軍企業(yè)組成。Google通過與運營商、設(shè)備制造商、開發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化、開放式的移動電話軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)?!?】Android 作為谷歌企業(yè)戰(zhàn)略的重要組成部分,將進一步推進隨時隨地為每個人提供信息這一企業(yè)目標(biāo)的實現(xiàn)。我們發(fā)現(xiàn),全球為數(shù)眾多的移動電話用戶從未使用過任何基于 Android 的電話。谷歌的目標(biāo)是讓(移動通訊)不依賴于設(shè)備甚至平臺。出于這個目的,Android 將補充,而不會替代谷歌長期以來奉行的移動發(fā)展戰(zhàn)略:通過與全球各地的手機制造商和移動運營商結(jié)成合作伙伴,開發(fā)既有用又有吸引力的移動服務(wù),并推廣這些產(chǎn)品?!?】開放手機聯(lián)盟的成立和 Android 的推出是對現(xiàn)狀的重大改變,在帶來初步效益之前,還需要不小的耐心和高昂的投入。但是,谷歌也在不斷努力,讓這些服務(wù)變得更好,同時也將添加更有吸引力的特性、應(yīng)用和服務(wù)。1.4 項目研究的主要內(nèi)容此游戲主要用到了Android用來畫圖的API,主類繼承view類,重寫其onDraw()方法并另起一個線程對主UI線程更新,實現(xiàn)整個游戲的動態(tài)效果。其中自己寫了很多算法來實現(xiàn)一些炫酷的效果。游戲主體框架的構(gòu)思,分為8大部分: com.hkdg.animation用來存放游戲中所用到的對ani動畫的初始化及播放的類。 com.hkdg.game主要用來存放從服務(wù)器解析過來的數(shù)據(jù),也包括讀取的本地數(shù)據(jù)。 com.hkdg.game.Music用來存放游戲中音樂,音效的初始化及播放的類。 com.hkdg.game.Object游戲中所用到的所有實體類存放在此。 com.hkdg.game.View游戲UI由若干自定義View組成,所有的View類存放于此。 com.hkdg.GameEngine此包中主要存放的是一個繼承了View的類,它另起了一個線程用來繪制界面,并同時更新主UI線程。 com.hkdg.Main這是一個存放著幾個Activity的包,游戲中為數(shù)不多的幾個activity都存放于此。 com.hkdg.tools這是一個存放著工具類的工具包。1.5 本章小結(jié)本章主要對Android的發(fā)展歷程以及對本游戲內(nèi)容進行了簡單的闡述,為Android開發(fā)者提供一個參考。2 Android的開發(fā)環(huán)境2.1 Android操作系統(tǒng)目前只支持XP(32-bit)、Vista(32/64-bit)、Mac OS X 10.4.8或更新版本(x86),Linux(只在Linux Ubuntu Dapper Drake上面做過測試)。 系統(tǒng)XP sp2/sp3 32bit 來做講解,其他系統(tǒng)的可以google一下差異,反正都大同小異的。2.2 Android開發(fā)環(huán)境建議使用eclipse進行開發(fā),當(dāng)然,eclipse版本要在3.3以上,這是官方說法,3.3以下我也沒測過,3.3 (Europa)、3.4 (Ganymede) 都可以java版本或者EE版本也都沒問題的,可以到eclipse官方下載最新版本。因為開發(fā)是基于java的,所以jdk是少不了的,jdk要求是5.0或者6.0,我還是用5.0比較多,可以到sun官方下載。2.3 Android開發(fā)環(huán)境變量的配置2.3.1 JDK的配置首先要到sun官方下載jdk,注意的是下載jdk而不是下載jre,因為jre是提供java的運行環(huán)境而不是開發(fā)環(huán)境。sun官方網(wǎng)站是:http:/ 下載后安裝是下的解壓包那就解壓到某目錄,例如解壓到是C:Program FilesJavajdk1.5.0_14 右鍵點擊我的電腦 - 屬性 - 高級,點擊下面的環(huán)境變量,在下面的“系統(tǒng)變量”處選擇新建在變量名處輸入 JAVA_HOME變量值中輸入剛才的目錄,比如C:Program FilesJavajdk1.5.0_14 。效果如圖2-1所示:圖2-3-1-1 進入環(huán)境變量確定后再新建一個變量名為classpath,變量值為 %JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar , 確定后找到PATH的變量,雙擊或點擊編輯,在變量值最前面加上%JAVA_HOME%/bin; 注意里面的是,確定、確定、確定后即可。具體如下圖2-2所示圖2-3-1-2 環(huán)境變量的配置然后開始 - 運行 cmd,輸入java或者javac看看有沒有效果,如果出來一大堆其它的東西,那就好了,如果出現(xiàn)類似xxx不是內(nèi)部或者是外部命令之類的,那就說明你的設(shè)置有問題,看看那里出問題然后加以改正。2.3.2 SDK的配置因為我們要開發(fā)的android應(yīng)用程序,所以下的sdk是Google那里下載,地址在http:/ 以后更新后估計地址會變,所以大家可以從http:/ 然后同樣要設(shè)置環(huán)境變量,同jdk設(shè)置,新建一個SDK_HOME,值為D:SDKandroid-sdk-windows-1.5_r3android-sdk-windows-1.5_r3 ,然后找到path,在前面加上%SDK_HOME%tools; 就OK了。和jdk一樣,我們也可以測試一下環(huán)境變量是否設(shè)置成功,cmd窗口中輸入android,出現(xiàn)一堆東西,就完成了。2.4 Eclipse的配置當(dāng)然,以上都搞定后,還不能馬上用eclipse開發(fā)android應(yīng)用程序,還必須添加eclipse插件才行,幸好這步驟非常輕松,打開eclipse后,點擊菜單欄的help - install new software. 然后點擊Add會出來一個Add Site的窗口,這里Name輸入android(自己取個就是了),location中輸入插件的網(wǎng)絡(luò)地址: https:/dl- DDMS 和 Android Development Tools都選中,finish就可以了,可能有段時間會去計算插件占用資源情況,慢慢等會。完成后會提示重啟eclipse來加載插件,ok重啟,就可以用了。2.5 本章小結(jié)本章將主要介紹如何構(gòu)建Android開發(fā)環(huán)境,包括獲取Android SDK、Eclipse以及進行Android Eclipse插件設(shè)置等。3 Android應(yīng)用程序核心3.1 應(yīng)用程序基礎(chǔ)Android的應(yīng)用程序全部都是用Java編程語言所寫的。編譯后的Java代碼包括應(yīng)用程序要求的任何數(shù)據(jù)和資源文件,是通過aapt工具捆綁成一個Android包,歸檔文件是以.apk為后綴。這個文件是分發(fā)應(yīng)用程序和安裝到移動設(shè)備的中介或者是工具,用戶下載這個文件到他們自己的設(shè)備上。一個.apk文件中的所有代碼就會被認為是一個應(yīng)用程序。 aapt是Android Asset Packaging Tool的首寫字母的縮寫,這個工具包是含在SDK的tools/目錄下的。查看、創(chuàng)建、更新與zip兼容的歸檔文件(zip、jar、apk)。它也能將資源文件編譯成二進制包。 雖然你可能不會經(jīng)常直接使用appt,但構(gòu)建腳本(build scripts)和IDE插件會使用這個工具打包成apk文件,構(gòu)成一個Android的應(yīng)用程序。 下面是更詳細的使用細節(jié),5首先打開一個終端,進入tools/目錄下,運行命令: Linux或Mac操作系統(tǒng):./aapt ,如果是Windows:aapt.exe 。在這里注意的是:tools/目錄指的是android SDK目錄下的/platforms/android-X/tools/。在很多的方面,每個Android的應(yīng)用程序是生活在它自己的世界。默認的情況下,任何一個應(yīng)用程序是運行在它自己的Linux進程中。而當(dāng)應(yīng)用程序中的任何代碼需要被執(zhí)行時候,Android將啟動進程;當(dāng)它不再需要和系統(tǒng)資源不會被其他應(yīng)用程序所請求時,Android就會關(guān)閉這個進程。每一個應(yīng)用程序都有自己的Java虛擬機(VM),所以應(yīng)用程序的代碼是獨立于其他所有的應(yīng)用程序代碼的運行。在默認情況下,每一個應(yīng)用程序分配一個唯一的Linux用戶ID。權(quán)限被設(shè)置為每一個應(yīng)用程序的文件僅對用戶和應(yīng)用程序自己本身可見。雖然有一些方法也可以暴露他們給其他應(yīng)用程序。也有可能的是設(shè)置兩個應(yīng)用程序共享一個用戶ID,這種情況下,他們能夠看到對方的文件。為了節(jié)省系統(tǒng)資源的占用,具有相同ID的應(yīng)用程序最好可以安排在同一個Linux進程中,共享同一個VM。53.2 應(yīng)用程序組件3.2.1 AcitivityActivity是Android組件中最基本也是最為常見的組件,在一個Android應(yīng)用中,一個Activity通常就是一個單獨的屏幕。當(dāng)Activity從一種狀態(tài)轉(zhuǎn)變到另一種狀態(tài)時,會調(diào)用以下保護方法來通知這種變化:void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()【6】下圖為Activity的生命周期圖示:圖3-2-1 Activity的生命周期圖示6在實現(xiàn) Activity 類的時候,通過覆蓋( override )這些方法即可在你需要處理的時候來調(diào)用。onCreate :當(dāng)活動第一次啟動的時候,觸發(fā)該方法,可以在此時完成活動的初始化工作。onCreate 方法有一個參數(shù),該參數(shù)可以為空( null ),也可以是之前調(diào)用onSaveInstanceState ()方法保存的狀態(tài)信息。onStart :該方法的觸發(fā)表示所屬活動將被展現(xiàn)給用戶。onResume :當(dāng)一個活動和用戶發(fā)生交互的時候,觸發(fā)該方法。onPause :當(dāng)一個正在前臺運行的活動因為其他的活動需要前臺運行而轉(zhuǎn)入后臺運行的時候,觸發(fā)該方法。這時候需要將活動的狀態(tài)持久化,比如正在編輯的數(shù)據(jù)庫記錄等。onStop :當(dāng)一個活動不再需要展示給用戶的時候,觸發(fā)該方法。如果內(nèi)存緊張,系統(tǒng)會直接結(jié)束這個活動,而不會觸發(fā) onStop 方法。 所以保存狀態(tài)信息是應(yīng)該在onPause時做,而不是onStop時做?;顒尤绻麤]有在前臺運行,都將被停止或者Linux管理進程為了給新的活動預(yù)留足夠的存儲空間而隨時結(jié)束這些活動。因此對于開發(fā)者來說,在設(shè)計應(yīng)用程序的時候,必須時刻牢記這一原則。在一些情況下,onPause方法或許是活動觸發(fā)的最后的方法,因此開發(fā)者需要在這個時候保存需要保存的信息。onRestart :當(dāng)處于停止?fàn)顟B(tài)的活動需要再次展現(xiàn)給用戶的時候,觸發(fā)該方法。onDestroy :當(dāng)活動銷毀的時候,觸發(fā)該方法。和onStop 方法一樣,如果內(nèi)存緊張,系統(tǒng)會直接結(jié)束這個活動而不會觸發(fā)該方法。onSaveInstanceState :系統(tǒng)調(diào)用該方法,允許活動保存之前的狀態(tài),比如說在一串字符串中的光標(biāo)所處的位置等。通常情況下,開發(fā)者不需要重寫覆蓋該方法,在默認的實現(xiàn)中,已經(jīng)提供了自動保存活動所涉及到的用戶界面組件的所有狀態(tài)信息。3.2.2 ServiceService是一種長生命周期,沒有用戶界面的程序。Service是android 系統(tǒng)中的一種組件,它跟Activity的級別差不多,但是他不能自己運行,只能后臺運行,并且可以和其他組件進行交互。Service的啟動有兩種方式:context.startService()和context.bindService()。【7】使用context.startService() 啟動Service是會經(jīng)歷:context.startService() -onCreate()- onStart()-Service running context.stopService() | -onDestroy() -Service stop如果Service還沒有運行,則android先調(diào)用onCreate()然后調(diào)用onStart();如果Service已經(jīng)運行,則只調(diào)用onStart(),所以一個Service的onStart方法可能會重復(fù)調(diào)用多次。stopService的時候直接onDestroy,如果是調(diào)用者自己直接退出而沒有調(diào)用stopService的話,Service會一直在后臺運行。該Service的調(diào)用者再啟動起來后可以通過stopService關(guān)閉Service。 所以調(diào)用startService的生命周期為:onCreate - onStart(可多次調(diào)用) - onDestroy 使用使用context.bindService()啟動Service會經(jīng)歷: context.bindService()-onCreate()-onBind()-Service running onUnbind() -onDestroy() -Service stop onBind將返回給客戶端一個IBind接口實例,IBind允許客戶端回調(diào)服務(wù)的方法,比如得到Service運行的狀態(tài)或其他操作。這個時候把調(diào)用者(Context,例如Activity)會和Service綁定在一起,Context退出了,Srevice就會調(diào)用onUnbind-onDestroy相應(yīng)退出。所以調(diào)用bindService的生命周期為:onCreate - onBind(只一次,不可多次綁定) - onUnbind - onDestory。在Service每一次的開啟關(guān)閉過程中,只有onStart可被多次調(diào)用(通過多次startService調(diào)用),其他onCreate,onBind,onUnbind,onDestory在一個生命周期中只能被調(diào)用一次。service可以在和多場合的應(yīng)用中使用,比如播放多媒體的時候用戶啟動了其他Activity這個時候程序要在后臺繼續(xù)播放,比如檢測SD卡上文件的變化,再或者在后臺記錄你地理信息位置的改變等等,總之服務(wù)嘛,總是藏在后頭的?!?】3.2.3 BroadcastReciverBrodcastReciver是為了實現(xiàn)系統(tǒng)廣播而提供的組件。在android下,要想接受廣播信息,那么這個廣播接收器就得我們自己來實現(xiàn)了,我們可以繼承BroadcastReceiver,就可以有一個廣播接受器了。有個接受器還不夠,我們還得重寫B(tài)roadcastReceiver里面的onReceiver方法,當(dāng)來廣播的時候我們要干什么,這就要我們自己來實現(xiàn)。具體的代碼:public class SmsBroadCastReceiver extends BroadcastReceiver Override public void onReceive(Context context, Intent intent) Bundle bundle = intent.getExtras(); /這里寫你要做的事情 我們可以把廣播接收器注冊到系統(tǒng)里面,可以讓系統(tǒng)知道我們有個廣播接收器。這里有兩種,一種是代碼動態(tài)注冊:/生成廣播處理 smsBroadCastReceiver = new SmsBroadCastReceiver(); /實例化過濾器并設(shè)置要過濾的廣播 IntentFilter intentFilter = new IntentFilter(android.provider.Telephony.SMS_RECEIVED); /注冊廣播 BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter); /onDestroy要注銷廣播 調(diào)用unregisterReceiver(.)函數(shù); 一種是在AndroidManifest.xml中配置廣播 兩種注冊類型的區(qū)別是:1)第一種不是常駐型廣播,也就是說廣播跟隨程序的生命周期。2)第二種是常駐型,也就是說當(dāng)應(yīng)用程序關(guān)閉后,如果有信息廣播來,程序也會被系統(tǒng)調(diào)用自動運行。3.2.4 ContentProviderContentProvider可以實現(xiàn)不同組件之間的數(shù)據(jù)共享。ContentProvider:為存儲和獲取數(shù)據(jù)提供統(tǒng)一的接口??梢栽诓煌膽?yīng)用程序之間共享數(shù)據(jù)。Android已經(jīng)為常見的一些數(shù)據(jù)提供了默認的ContentProvider1、ContentProvider使用表的形式來組織數(shù)據(jù) 無論數(shù)據(jù)的來源是什么,ContentProvider都會認為是一種表,然后把數(shù)據(jù)組織成表格2、ContentProvider提供的方法 query:查詢 insert:插入 update:更新 delete:刪除 getType:得到數(shù)據(jù)類型 onCreate:創(chuàng)建數(shù)據(jù)時調(diào)用的回調(diào)函數(shù)3、每個ContentProvider都有一個公共的URI,這個URI用于表示這個ContentProvider所提供的數(shù)據(jù)。Android所提供的ContentProvider都存放在android.provider包當(dāng)中二、ContentProvider的內(nèi)部原理自定義一個ContentProvider,來實現(xiàn)內(nèi)部原理步驟:1、定義一個CONTENT_URI常量(里面的字符串必須是唯一)Public static final Uri CONTENT_URI = Uri.parse(content:/com.WangWeiDa.MyContentprovider);如果有子表,URI為:Public static final Uri CONTENT_URI = Uri.parse(content:/com.WangWeiDa.MyContentProvider/users);2、定義一個類,繼承ContentProviderPublic class MyContentProvider extends ContentProvider3、實現(xiàn)ContentProvider的所有方法(query、insert、update、delete、getType、onCreate)4、在AndroidMinifest.xml中進行聲明 android:name=.cp.MyContentProvider android:authorities=com.WangWeiDa.cp.MyContentProvider /3.3 本章小結(jié)本章將會詳細敘述Android的應(yīng)用程序所包括的基本組件,還有這些組件之間的溝通方式Intent(除了Contentprovider),同時講解一下Android應(yīng)用程序的生命周期(Activity)這是其他智能收與Android手機平臺最顯著不同的地方。最后將介紹在Android的應(yīng)用程序中如何利用下載外部資源。4 項目相關(guān)技術(shù)4.1 地圖的滑動地圖的滑動我是分兩步實現(xiàn):1. 重寫Activity的onFling()方法,用來判斷用戶手指滑動的方向。onFling()是Android手勢中用來接收快速滑動的方法,要實現(xiàn)這樣一個滑動效果需要一下四步, 否則失效。 【8】寫一個類,實現(xiàn)OnGestureListener, OnTouchListener接口。重寫里面的方法,記得把onDown()方法return true;這樣才能觸發(fā)onFling事件。 (2) 設(shè)置layout的onTouch事件: LinearLayout layout = (LinearLayout) findViewById(R.id.mylayout); layout.setOnTouchListener(this);(3) 在touch時調(diào)用如下: 在onTouch方法中return detector.onTouchEvent(event); /其中detector是:GestureDetector detector = new GestureDetector(this); (4)寫onFling()方法: public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) if(e1.getX() - e2.getX() 50 & Math.abs(velocityX)0) System.out.println(Left.);/向左滑動 else if(e2.getX()-e1.getX()50 & Math.abs(velocityX)0) System.out.println(Right.);/向右滑動 return false; 【8】在本項目中的HKDGActivity的onFling()方法中我是直接調(diào)用了GameEngine的onFling()方法:Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) / TODO Auto-generated method stub/Toast.makeText(this, onFling, Toast.LENGTH_SHORT).show();return _ge.onFling(e1, e2, velocityX, velocityY);2. 重寫Activity的onScroll()方法,用來控制圖片的移動。Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) / TODO Auto-generated method stubreturn _ge.onScroll(e1, e2, distanceX, distanceY);4.2 MusicPlayer這是一個自己封裝的類,用來播放游戲中的音樂。里面封裝了一個MediaPlayer對象及幾個對音樂文件進行操作的方法。MediaPlayer類可用于控制音頻/視頻文件或流的播放, 對播放音頻/視頻文件和流的控制是通過一個狀態(tài)機來管理的,如下圖所示:9圖4-2 MediaPlayer的狀態(tài)機制9public class Music private Context _context;private MediaPlayer _meMediaPlayer;private boolean _isMute=false;public Music(Context context) _context = context;_meMediaPlayer = new MediaPlayer();public void initMusic(int resID) _meMediaPlayer = MediaPlayer.create(_context, resID);public void initMusic(String path) try AssetManager assetManager = _context.getAssets();AssetFileDescriptor afd = assetManager.openFd(path);_meMediaPlayer.reset();_meMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength(); catch (IllegalArgumentException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IllegalStateException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();public void playMusic() if (!_meMediaPlayer.isPlaying()|!_isMute) try _meMediaPlayer.prepare();_meMediaPlayer.start();setLoop(true); catch (IllegalStateException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();public void setLoop(boolean isloop) _meMediaPlayer.setLooping(isloop);public void setMute(boolean setMute) _isMute = setMute;public void setMusicVolum(int Volume) _meMediaPlayer.setVolume(Volume, Volume);public void stop() if (_meMediaPlayer.isPlaying()|!_isMute) _meMediaPlayer.stop();public void pause() if (_meMediaPlayer.isPlaying()|!_isMute) _meMediaPlayer.pause();public Boolean isPlaying()return _meMediaPlayer.isPlaying();public void releaseMusic() _meMediaPlayer.stop();_meMediaPlayer.reset();_meMediaPlayer.release();_meMediaPlayer=null;4.3 本游戲的核心類GameEngine如果說整個游戲是一架飛機,那么GameEngine絕對是這個飛機的引擎。其他所有的類是這架飛機大大小小的零件,部件。他們之間通過種種設(shè)計模式也就是飛機 的鋼筋骨架連接起來,成為一架完整的飛機。而這架飛機最終翱翔天空,GameEngine提供了核心動力。首先這個類繼承了View,而這個自定義的View就是我們游戲的界面。因此我們可以在這個View里面重寫其onDraw()方法來畫出炫麗的游戲界面。protected void onDraw(Canvas canvas) if (paint = null) paint = new Paint();paint.setColor(android.R.color.black);canvas.drawRect(0, 0, this.getWidth(), this.getHeight(), paint);if(ispaint)if (getPage() != null) getPage().paint(canvas,mPaint);if (_screenState != SCREEN_NORMAL) paint2.setColor(android.R.color.black);paint2.setAlpha(alphaSize);canvas.drawRect(0, 0, this.getWidth(), this.getHeight(), paint2);然后,這個類實現(xiàn)了Runable接口,在這個View里面重新啟動了一個線程用來驅(qū)動整個游戲的運行。/ the thread controllerpublic void run() long start, cost;while (mBLoop) start = System.currentTimeMillis();try cost = System.currentTimeMillis() - start;start = this.sleepSlice - cost;if (start 0) try logic();Thread.sleep(start); catch (Exception e) e.printStackTrace(); catch (Exception e) e.printStackTrace();this.postInvalidate(); / refurbish the screen最后,

注意事項

本文(基于Android的益智游戲的設(shè)計與實現(xiàn)本科生畢業(yè)設(shè)計.doc)為本站會員(good****022)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!