2010-10-18 10 views
6

Je suis en train de concevoir un jeu Android simple en utilisant une vue de surface similaire à l'exemple Lunar Lander fourni par Google. Je veux faire apparaître diverses choses telles que les meilleurs scores, les messages, les menus, etc. à l'écran avec la vue de la surface toujours en arrière-plan. Le problème est que je veux que les "pop ups" contiennent de nombreux éléments de conception tels que des images, des boîtes de texte, etc. Y at-il un moyen que je puisse créer une mise en page en XML pour concevoir le pop up que je veux sur la vue de surface comme un objet plutôt que d'avoir à construire chaque élément individuel un par un dans le code et à les peindre tous sur la toile? Je souhaite animer les fenêtres contextuelles du côté de l'écran, il serait donc bon que je conçoive la mise en page en XML afin que tous les objets connaissent leur relation les uns par rapport aux autres, puis animent cette mise en page en tant qu'objet .Superposer une mise en page Android sur une surfaceview

Cela me semble quelque chose de très simple mais je n'arrive pas à trouver comment y parvenir.

Répondre

3

Une manière simple de le faire est de créer votre interface popup comme une activité différente. Vous lui donneriez alors un thème d'arrière-plan transparent, comme le thème Dialog, dans votre fichier manifeste.

Regardez les exemples CustomDialog, Translucent et TranslucientBlur dans les démos de l'API. Ils créent de telles activités. Le fait que l'activité sous-jacente soit dans une surface ne devrait rien changer.

6

Vous pouvez superposer des éléments au-dessus de SurfaceView, soit en code, soit dans vos mises en page XML.

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

Et dans votre Actiivty:

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

Je ne sais pas sur les problèmes de performance bien.