基于Android的移動(dòng)應(yīng)用開發(fā)_第1頁
基于Android的移動(dòng)應(yīng)用開發(fā)_第2頁
基于Android的移動(dòng)應(yīng)用開發(fā)_第3頁
基于Android的移動(dòng)應(yīng)用開發(fā)_第4頁
基于Android的移動(dòng)應(yīng)用開發(fā)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于Android的移動(dòng)應(yīng)用開發(fā)Android是一個(gè)基于Java的環(huán)境。這對(duì)初學(xué)者來說是個(gè)好消息,因?yàn)橄鄬?duì)于C+,Java被廣泛認(rèn)為是一門更容易上手的語言,它是移動(dòng)開發(fā)的規(guī)范。Android開發(fā)工具Android開發(fā)之初,Eclipse作為Google推薦的原生開發(fā)工具之一。如果你熟悉Java并且用過Eclipse,要讓你的第一個(gè)應(yīng)用跑起來那是相當(dāng)簡(jiǎn)單。如果你以前從沒寫過代碼,在你前進(jìn)路上還要學(xué)習(xí)很多,但別放棄。Android開發(fā)工具Android Studio是谷歌13年推出的一款基于Intellij IDEA開發(fā)的Android IDE。據(jù)說之前有很多bug,所以導(dǎo)致沒有多少人去使用,在最

2、近幾個(gè)版本的更新后已經(jīng)非常不錯(cuò)了,基本到了不用就out的地步了。下面來對(duì)比一下 Android Studio和Eclipse。Android Studio與Eclipse據(jù)說現(xiàn)在使用Eclipse 做 Android開發(fā)的程序員走在路上都不好意思和別人打招呼。因?yàn)楝F(xiàn)在開發(fā)都在用Android Studio。Android Studio的優(yōu)點(diǎn)1. 1.比比EclipseEclipse漂亮漂亮2 2. .比比EclipseEclipse速度快(速度快(與電腦性能有關(guān)與電腦性能有關(guān))3. 3.提示,補(bǔ)全更加提示,補(bǔ)全更加智能智能。4. 4.整合了整合了GradleGradle構(gòu)建構(gòu)建工具(工具(電腦

3、不好很卡電腦不好很卡)5. 5.支持支持Google Cloud Google Cloud PlatformPlatform6. 6.強(qiáng)大的強(qiáng)大的UIUI編輯器編輯器7 7. .更完善的插件更完善的插件系統(tǒng)系統(tǒng)8. 8.完美的整合版本控制完美的整合版本控制軟件(軟件(svnsvn、gitgit)最后一條優(yōu)點(diǎn)也是最重要的優(yōu)點(diǎn):9.Android Studio是是Google推出推出的的。Android Stuido是Google推出,專門為Android“量身訂做”的,是Google的親兒子。作為Android Developer大腿一定要抱緊。Eclipse目錄結(jié)構(gòu)Android Studio

4、目錄結(jié)構(gòu)獲取SDK新手上路的第一步便是獲取Android SDK(軟件開發(fā)工具包)。SDK里有一個(gè)核心類庫,一個(gè)模擬器,一些工具和示例代碼。(其實(shí)可以下載一個(gè)集成包,安裝或者解壓后即可)學(xué)習(xí)應(yīng)用程序架構(gòu)別急著一頭扎進(jìn)開發(fā)的海洋里,理解Android應(yīng)用程序架構(gòu)是很重要的。如果你不學(xué)一下,你設(shè)計(jì)出來的游戲在線下將很難調(diào)試。Google提供了很多有用的架構(gòu)信息。真正重要的是要理解為什么你的游戲需要多于一個(gè)的Activity,以及怎樣才能設(shè)計(jì)一個(gè)有良好用戶體驗(yàn)的游戲。要理解這些,首先要了解什么是Activity生命周期生命周期。學(xué)習(xí)Activity生命周期你的activity創(chuàng)建、恢復(fù)、暫停、銷毀都

5、受Android操作系統(tǒng)的支配。正確處理這些事件是很重要的,這樣應(yīng)用程序才能表現(xiàn)良好,做用戶認(rèn)為正確的事。在設(shè)計(jì)游戲之前了解所有這些是如何工作的是件好事,因?yàn)橐院竽憧梢詾樽约汗?jié)省調(diào)試時(shí)間和昂貴的重新設(shè)計(jì)時(shí)間。學(xué)習(xí)Activity生命周期對(duì)大多數(shù)應(yīng)用來說,默認(rèn)的設(shè)置將工作正常,但對(duì)于游戲游戲,你可能需要考慮將SingleInstance標(biāo)志打開。當(dāng)設(shè)置為默認(rèn)時(shí),Android在它認(rèn)為合適時(shí)會(huì)創(chuàng)建activity的新實(shí)例。對(duì)于游戲來說,你可能只需要一個(gè)游戲activity的實(shí)例。這對(duì)于你要怎樣管理事務(wù)的狀態(tài)有些影響,但對(duì)于我來說,這解決了一些資源管理的問題,應(yīng)予以考慮。主循環(huán)根據(jù)你寫的游戲的類型,

6、你可能需要也可能不需要一個(gè)主循環(huán)。如果如果你的游戲不依賴于時(shí)間或者它僅僅對(duì)用戶所做的加以回應(yīng),并且不做任何視覺上的改變,永遠(yuǎn)等待著用戶的輸入,那么你就不需要主循環(huán)。如果如果你寫的是動(dòng)作類游戲或者帶有動(dòng)畫、定時(shí)器或任何自動(dòng)操作的游戲,你應(yīng)該認(rèn)真考慮下使用主循環(huán)。主循環(huán)游戲的主循環(huán)以一個(gè)特定的順序在每秒鐘內(nèi)“滴答”提醒子系統(tǒng)運(yùn)行。你的主循環(huán)需要在它自己的線程里運(yùn)行,原因是Android有一個(gè)主用戶界面線程,如果你不運(yùn)行自己的線程,用戶界面線程將會(huì)被你的游戲所阻塞,這會(huì)導(dǎo)致Android操作系統(tǒng)無法正常的更新任務(wù)。游戲輸入輸入是指用戶按下的任何鍵、對(duì)于滾動(dòng)條的移動(dòng)或者用戶的觸摸。在處理物理之前處理這

7、些是很重要的,因?yàn)楹芏鄷r(shí)候輸入會(huì)影響到物理層,因而首先處理輸入將會(huì)使游戲的反應(yīng)更加良好。在Android里,輸入事件從主用戶界面線程而來,因此你必須寫代碼將輸入放入緩沖區(qū),這樣你的主循環(huán)可以在需要的時(shí)刻就從緩沖區(qū)里取到它。這并非難事。游戲輸入首先為下一個(gè)用戶輸入定義一個(gè)域,然后將onKeyPressed或onTouchEvent函數(shù)設(shè)為接到一個(gè)用戶動(dòng)作就放到那個(gè)域里,有這兩步就夠了。如果對(duì)于給定游戲的狀態(tài),這是一個(gè)合法的輸入操作,那么所有輸入需要在那一刻做的更新操作都已經(jīng)定下來了,剩下來就讓物理去關(guān)心怎樣響應(yīng)輸入吧。動(dòng)畫效果動(dòng)畫并非像在游戲里放入會(huì)動(dòng)的gif圖片那樣簡(jiǎn)單。你需要使得游戲能在恰當(dāng)

8、的時(shí)間畫出每一幀。但又并沒有聽起來那么困難。保留一些像isDancing、danceFrame和lastDanceFrameTime那樣的狀態(tài)域,那樣動(dòng)畫更新便能決定是否可以切換到下一幀去了。動(dòng)畫更新真正做的事就那么多。真正來顯示動(dòng)畫的變化是由繪畫更新來處理的。聲音效果正常情況下當(dāng)寫游戲的時(shí)候,聲音更新會(huì)產(chǎn)生一些傳往聲音緩沖區(qū)的字節(jié)流,但是Android能夠管理自己的聲音,因而你的選擇將是使用SoundPool或者M(jìn)ediaPlayer。它們都需要小心處理以免出錯(cuò),但你要知道,因?yàn)橐恍┑讓訉?shí)現(xiàn)細(xì)節(jié),小型、低比特率的聲音文件將帶來最佳的性能和穩(wěn)定性。開始繪制繪畫更新要考慮游戲的狀態(tài)、角色的位置、

9、分?jǐn)?shù)、狀態(tài)等等,并將一切畫到屏幕上。如果使用主循環(huán),你可能需要使用SurfaceView,并做一個(gè)“推”繪制。對(duì)于其他視圖,視圖本身能夠調(diào)用繪制操作,主循環(huán)不必處理。選擇繪制工具SurfaceView每秒產(chǎn)生的幀數(shù)最多,最適合于一些有動(dòng)畫或屏幕上有運(yùn)動(dòng)部件的游戲。繪畫更新所要做的工作是獲取游戲的狀態(tài),并及時(shí)地為這個(gè)狀態(tài)繪制圖像。其他的自動(dòng)化操作最好由不同的更新任務(wù)來處理。效率優(yōu)先性能是任何游戲的主要問題。我們的目標(biāo)是使得游戲的反應(yīng)越快越好,看起來越流暢越好。某些方法如Canvas.drawLine比較慢。并且要將屏幕大小的位圖畫到主畫布上,每一幀都是代價(jià)昂貴的。如何權(quán)衡對(duì)于達(dá)到最佳性能很有必要

10、。效率優(yōu)先確保管理好你的資源,使用技巧來以最少量的CPU資源完成你的任務(wù)。如果性能不好的話,即使是最好的游戲玩起來也沒勁。人們一般對(duì)于游戲卡或者響應(yīng)慢幾乎難以容忍在游戲中始終一致的位圖配置(如RGBA8888)。這將會(huì)通過減少不同格式之間轉(zhuǎn)換的時(shí)間來節(jié)省圖形庫的CPU時(shí)間。效率優(yōu)先聲音文件要小而且低比特率。需要加載的越少,加載速度越快,游戲所需內(nèi)存越少。聲音使用OGG文件,圖片使用PNG文件。確保釋放所有媒體播放器,當(dāng)Activity銷毀時(shí)空出所有的資源。這能保證垃圾收集器清除了所有東西,也能保證在兩次游戲開始之間沒有內(nèi)存泄露。測(cè)試最重要的是,花時(shí)間測(cè)試再測(cè)試,確保每一小部分都如你所愿地工作。

11、改善游戲是整個(gè)開發(fā)中最耗時(shí)最困難的部分。如果你匆匆將其推向市場(chǎng),你很可能會(huì)使用戶們失望,你會(huì)感到你的努力都白費(fèi)了。你不可能使所有人都喜歡你寫的東西,但你至少要盡量發(fā)布你最高質(zhì)量的作品。仿仿微信飛機(jī)大戰(zhàn)游戲開發(fā)面向?qū)ο箝_發(fā)應(yīng)該考慮面向?qū)ο箝_發(fā)面相對(duì)象開發(fā)的好處瞬間就能爆發(fā)出來,此時(shí)將飛機(jī)大戰(zhàn)中的所有部件抽象成對(duì)象,如:背景,自己的飛機(jī),自己發(fā)射的子彈,敵人的飛機(jī)(大、中、?。?,敵人的子彈。由于所有的部件都有類似的本領(lǐng)和功能,所以此處可以再次抽象出一個(gè)接口public interface GameImg Rect getRect(); Bitmap getBitmap(boolean move);

12、 int getX(); int getY();其他所有部件均實(shí)現(xiàn)該接口如:public class PlaneImg implements GameImgpublic Rect getRect() public Bitmap getBitmap(boolean move)public int getX()public int getY()以敵人的飛機(jī)為例子:為了更好的體現(xiàn)高內(nèi)聚、低內(nèi)聚,所有類都有自己的任務(wù),并且都放在不同的java文件中。開始游戲時(shí),我設(shè)置了一個(gè)定時(shí)+隨機(jī)策略來派遣敵機(jī),然后他的生死我就不管了,他愿意怎么混就怎么混。我將敵機(jī)看做是一個(gè)活生生的人,他有自己的思維(只是比較笨)

13、。敵機(jī)一出生后,他會(huì)知道自己的大小,可能是大飛機(jī)、中飛機(jī)、小飛機(jī)。他會(huì)知道自己的價(jià)值,10分、30分、60分。他會(huì)知道自己在被打中身亡的時(shí)候是否有能力背水一戰(zhàn),即:發(fā)送最后一個(gè)子彈。當(dāng)然,他會(huì)立即發(fā)射一顆子彈,而子彈的速度是隨機(jī)的,同時(shí)方向可能是左,前,右三個(gè)方向。他有自己的安全監(jiān)測(cè)系統(tǒng),負(fù)責(zé)自己的生命安全,如果被打中了,那么就會(huì)發(fā)生爆炸,最后消失在視野中。差點(diǎn)忘了,他的使命可以來消滅我軍飛機(jī)的,他有能力與我軍飛機(jī)碰撞同歸于盡。此時(shí)我軍飛機(jī)會(huì)爆炸并消失。而這些能力有一部分需要反饋給游戲者,那么如何展示就要靠繪畫者來完成了,而為了能夠較好的通知繪畫者,需要抽象出一個(gè)回調(diào)接口。敵機(jī)的能力雖然我們很清楚,但是我們不清楚他到底什么時(shí)候會(huì)使用該能力,比如,我們不可能一開始就知道敵機(jī)什么時(shí)候被打死了,而他被打死后需要通知繪畫者,如何通知便成了麻煩事情,總不能讓繪畫者使用輪詢的方式不停的問敵機(jī),“你到底死了沒呀?”那這樣的話豈不是必須讓敵機(jī)被打中后憋住一口氣一直等繪畫者來問完自己后才能死掉,未免有點(diǎn)委屈敵機(jī)了。所以此時(shí)使用回調(diào)接口,當(dāng)敵機(jī)死亡或者打中敵機(jī)時(shí),調(diào)用回調(diào)方法即可。public interface BeAttackCallBack /確定受到攻擊 void ensureBeAttack(float score); /確定被移除時(shí) void ensureRemov

溫馨提示

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

評(píng)論

0/150

提交評(píng)論