2010-10-18 165 views
6

我正在設計一個類似於Google提供的Lunar Lander樣本的使用Surfaceview的簡單Android遊戲。我希望在屏幕上彈出各種各樣的東西,例如高分,消息,菜單等,表面視圖仍然在後臺。在SurfaceView上覆蓋Android佈局

問題是,我想要「彈出窗口」包含許多設計元素,如圖像,文本框等。有沒有一種方法,我可以在XML中創建一個佈局來設計我想要的彈出窗口,然後顯示在面視圖上作爲一個對象,而不是必須在代碼中逐個構建每個單獨的元素,並將它們全部繪製到畫布上?

我想從屏幕的側面爲彈出窗口設置動畫,所以如果我使用XML設計佈局,以便所有對象知道它們之間的關係,然後將該佈局設置爲一個對象。

它讓我覺得很簡單,但我似乎找不到如何實現它。

回答

3

這樣做的一個簡單方法是創建您的彈出式界面作爲不同的活動。然後,您將在清單文件中爲其提供透明的背景主題,如對話主題。

查看API演示中的CustomDialog,Translucent和TranslucientBlur示例。他們創造了這樣的活動。底層活動在表面的事實不應該改變任何東西。

6

您可以在代碼中或在您的XML佈局中疊加SurfaceView上的元素。

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    > 
<android.view.SurfaceView 
     android:id="@+id/mysurface" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
</android.view.SurfaceView> 
</FrameLayout> 

而在你Actiivty:

TextView myText = new TextView(this); 
myText.setText("Something"); 
addContentView(myText, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

不知道有性能問題,但。