2010-10-18 12 views
6

Ich entwerfe ein einfaches Android-Spiel mit einer Oberflächenansicht, die dem von Google bereitgestellten Lunar Lander-Beispiel ähnelt. Ich möchte, dass verschiedene Dinge wie Highscores, Nachrichten, Menüs usw. auf dem Bildschirm angezeigt werden, wobei die Oberflächenansicht immer noch im Hintergrund ist.Overlay eines Android-Layouts auf einer Oberflächenansicht

Das Problem ist, dass ich möchte, dass die "Pop-ups" viele Design-Elemente wie Bilder, Textboxen usw. enthalten. Gibt es eine Möglichkeit, dass ich ein Layout in XML erstellen kann, um das gewünschte Pop-up zu entwerfen und dann anzuzeigen über die Oberflächenansicht als ein Objekt, anstatt jedes einzelne Element einzeln im Code konstruieren und alle auf die Leinwand malen zu müssen?

Ich möchte die Pop-ups von der Seite des Bildschirms animieren, also wäre es gut, wenn ich das Layout in XML entwerfe, so dass alle Objekte ihre Beziehung zueinander kennen und dann dieses Layout als ein Objekt animieren .

Es erscheint mir als etwas ganz einfaches, aber ich kann einfach nicht finden, wie man es erreicht.

Antwort

3

Eine einfache Möglichkeit besteht darin, Ihre Popup-Oberfläche als eine andere Aktivität zu erstellen. Sie würden dann ein transparentes Hintergrundthema wie das Dialogfelddesign in Ihrer Manifestdatei angeben.

Sehen Sie sich die Beispiele CustomDialog, Translucent und TranslucientBlur in API Demos an. Sie schaffen solche Aktivitäten. Die Tatsache, dass die zugrunde liegende Aktivität in einer Oberfläche ist, sollte nichts ändern.

6

Sie können Elemente über SurfaceView entweder im Code oder in Ihren XML-Layouts einblenden.

<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> 

Und in Ihrem Actiivty: obwohl

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

Sie wissen nicht, über die Performance-Probleme.

Verwandte Themen