【原創Android遊戲】NinOne V2.3.1 --載入模式的學習,介面的重新設計

來源:互聯網
上載者:User

標籤:android   style   blog   http   ar   io   color   os   使用   

上次更新後又發現了一些bug,而且是非常明顯的bug,一一加以改正了過來。

猜數字遊戲的功能已基本實現,不過我覺得一個應用單做一個遊戲有點不太過癮,略顯單調,於是我打算基於這個,寫一個n合1的遊戲整合應用,一個應用整合多款遊戲,這樣就可以通過一個應用想玩什麼遊戲就玩什麼遊戲了,雖然可能只會實現一些簡單遊戲,但是反正是自己寫著玩嘛,有興趣就有動力,嘿嘿。

---------------------------------------------------------------------------------------------------------

本次更新:

1.修正了應用程式安裝產生兩個表徵圖的問題2.修正了Activity載入模式3.遊戲最終主介面的設計
4.遊戲更名

---------------------------------------------------------------------------------------------------------

1.修正了應用程式安裝產生兩個表徵圖的問題。

,在安裝應用程式後出現了兩個應用表徵圖。

由於AndroidManifest.xml中兩個Activity中都包含了<action android:name="android.intent.action.MAIN" />, 即有兩個主進程,所以會產生兩個應用表徵圖,將RankActivity的這條語句刪去,就成功解決了這個問題。

 

2.修正了Activity載入模式

軟體的另一個bug在於,如果不斷地在兩個Activity之間切換,那麼在多次以後,按MainActivity中的退出是不會馬上退出程式的,而是不斷地退到MainActivity,然後很多次以後才會退出程式,這是Activity載入模式的問題。

首先我們來瞭解一下Android Activity的四種載入模式:

1.stantard:  標準模式。

預設載入模式,每次通過此模式來啟動目標Activity時,都會建立一個新的執行個體,並將該Activity加入到Task棧中(Task棧是用來管理Activity的)。

剛開始我用的就是預設的stantard模式,導致每次按下排行鍵,就會建立一個RankActivity的執行個體,並放到Task棧頂,轉入RankActivity時並不銷毀MainAcitvity,然後在熱門排行榜裡面按下返回鍵時,又重新建立一個MainActivity的執行個體,放到棧頂,RankActivity每次都會銷毀,所以多次在Activity間切換時,實際上棧中的Activity越來越多,而且都是MainActivity,這就解釋了為什麼在MainActivity中按退出還是會到MainActivity,因為它在一層一層地出棧。

2.singleTop: Task頂單例模式

與standard模式基本相同,唯一的不同就是: 當將要啟動的目標Activity已經在棧頂時,不再建立該Activity的執行個體,而是直接服用棧頂已有Activity。即“棧頂元素相同的只能有一個”,就是singleTop的意思。‘

3.singleTask: Task內單例模式

即在同一個Task內只能有一個執行個體,即只有一個Task,且Task內只能有一個相同的執行個體。

如果將要啟動的目標Activity:

    (1)不存在,那麼建立執行個體,並放到Task棧頂

    (2)已經位於Task棧頂,那麼處理同singleTop

    (3)已經存在,但是沒在棧頂,那麼把它上面的執行個體刪去,讓它成為棧頂。

4.singleInstance:全域單例模式

採用此種模式,系統保證無論從哪個Task啟動目標Activity,只會建立一個該Activity執行個體,並會建一個全新的Task來儲存該執行個體。

即: 每次目標Activity如果不存在,那麼建立一個Task,將其放到Task棧頂,然後如果存在,那麼把該Task放到前台即可。 這種方式每個Task中只會有一個執行個體。

--------------------------------------------

經過三種實驗:

1.直接在MainActivity中加finish(),每次跳轉都結束自己。

2.採用singleTask模式。

3.採用singleInstance模式。

第一種的話,無法儲存現場,導致每次猜數字中途去看排行都會清除掉這次猜的情況,即無法儲存現場。 第三種雖然能保護現場,但是跳轉時間隔時間太長,不符合這種小應用,我不希望這種小應用在任何一個地方延遲過多時間。所以,我決定用singleTask模式來處理和載入兩個Activity,並且在調轉時先不寫入資料。這樣的話,跳回來時可以繼續接著玩。

---------------------------------------------------------------------------------------------------------

 

3.遊戲最終主介面的設計

在網上找圖,自己P按鈕都用了好久,雖然按鈕設計地有點醜,但是目前就這樣吧。

然後就是調整MainActivity,加ImageButton,實現Activity間的切換等,按部就班地完成了。

先來看看主介面 ( 求輕噴 ):

 

然後是登入介面,本來是想一併做成對話方塊形式,但是還有一些問題,導致沒能實現,下次估計就能實現了。

點擊"猜數字遊戲"就進到猜數字遊戲的主介面,目前來講,這是本應用的核心功能。。

點擊"關於"可以得到軟體資訊,包括作者,版本等等。

 

4.遊戲更名

遊戲更名為NinOne,取n合1之意。

 

---------------------------------------------------------------------------------------------------------------

OK,這次代碼就不貼了,下一步應該好好研究下Git的使用,將代碼傳到github上管理好一點,總不能每次一個一個地貼啊。

本來這一次要實現資料庫的應用的,但是考慮到應用有所變化,等以後可能會實現一個遊戲的全域資料庫,所以資料庫先擱置一下。

下一步的話,先搞好Git,然後就應該好好想一下全域的架構設計了,一個猜數字遊戲好說,就是無腦寫演算法,然後放到一個Activity中即可,但是要實現多個遊戲,就應該好好想想怎麼去設計整個構成以及邏輯,以及資料庫的設計等等了,不能只是埋頭編碼,更要抬頭看路,我可不想寫到最後發現整個邏輯混亂至極,就像寫類比題一樣,寫著寫著自己都寫暈了,然後就gg了。

----------------------------------------------------------------------------------------------------------------------------------

下一步:

Git的使用,上傳代碼以及全域的架構設計。

----------------------------------------------------------------------------------------------------------------

APK: 點我下載

                                                                                                                             2014.12.19

【原創Android遊戲】NinOne V2.3.1 --載入模式的學習,介面的重新設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.