簡體   English   中英

何時使用新布局以及何時使用新活動?

[英]When to use new layouts and when to use new activities?

我正在用Android開發游戲,並試圖添加一組菜單屏幕。 每個屏幕占據整個顯示,並具有其他屏幕可用的各種轉換。 粗略總結一下,菜單屏幕為:

  1. 開始畫面
  2. 難以選擇的畫面
  3. 游戲畫面。
  4. 暫停屏幕。
  5. 屏幕游戲。

您可以通過幾種不同的方式在屏幕之間切換:

1-> 2

2-> 3

3-> 4(暫停游戲)

4-> 1(退出游戲)

4-> 3(繼續游戲)

3-> 5(游戲結束)

顯然,在屏幕之間移動時,我需要一些存儲狀態,例如,開始游戲時選擇的難度級別以及顯示游戲結束時玩家的得分是多少。

誰能給我一些建議,以最簡單的方法在Android中實現上述屏幕和轉換? 如果我不小心,所有的create / destroy / pause / resume方法都會讓我擔心編寫易碎的代碼。

我不喜歡在每個屏幕上使用“活動”。 似乎太重了,不得不使用意圖傳遞數據似乎很痛苦,每個屏幕本身都不是一個有用的模塊。 由於“后退”按鈕也不總是返回到上一個屏幕,因此我的菜單布局似乎不太適合活動模型。

目前,我將每個屏幕表示為XML布局文件,並且我有一個活動。 我在每個布局上設置了不同的按鈕,以調用setContentView來更新主要活動正在顯示的屏幕(例如,暫停按鈕將布局更改為暫停屏幕)。 該活動保留了所有需要的狀態(例如,當前的難度級別和游戲最高分),這使得在屏幕之間共享數據變得容易。 這似乎與LunarLander示例大致相似,但我使用的是多個屏幕。

我目前所聽到的聲音還可以,還是我不是按照典型的Android方式工作? 有沒有我可以使用的類(例如類似ViewFlipper的類)可以使我的生活更輕松?

順便說一下,我的游戲屏幕被實現為存儲游戲狀態的SurfaceView。 我需要該視圖中的狀態在調用setContentView之間保持一致(例如,從暫停狀態恢復)。 在活動開始時創建游戲視圖,保留對它的引用,然后在我希望游戲屏幕出現時將此引用與setContentView一起使用是正確的想法嗎?

這個問題已經問了很多。 您還閱讀了這些其他帖子嗎?

Android:哪個更好-進行多個活動或手動切換視圖? 該鏈接特別討論了Android設計指南 ,該指南 “根本沒有提到切換視圖;它以活動為視圖的設計為中心”。

Android-我應該使用多個活動還是多個內容視圖

具有多個活動的Android應用

如何將值從一個活動傳遞到上一個活動

我不確定返回按鈕的含義並不總是正確地返回到右側屏幕。 我有一款游戲的結構與您的游戲相似,並且后退按鈕始終可以將用戶正確地帶入活動鏈中。

此外,使用onResume,onPause等有點必要。 如果電話響了,您的應用程序會怎樣? (是的,我知道,有些人仍然會做一些奇怪的事情,例如使用電話來接聽電話! 。 onResume的另一個有用之處在於,它使您可以在用戶返回視圖后立即更新表。 例如,您的玩家剛剛完成一個關卡,然后被帶回到選擇難度屏幕。 如果僅從內存中恢復先前的屏幕,則可能尚未更新該屏幕,以考慮到該級別剛剛完成。 但是,如果您在onResume中放入一些代碼來處理該代碼,則該代碼將始終在播放器看到屏幕之前執行。

最后,您說圍繞活動轉移數據是有意圖的痛苦-是的,這可能是事實。 但是我通常會發現,無論您如何處理,傳輸任何類型的復雜數據都是一件痛苦的事情。 意圖真的那么糟嗎?還是僅僅是事情沒有您希望的那么簡單? 我不是那個意思。 我還經常發現在直觀上似乎很容易在代碼中實現的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM