2010-10-18 9 views
6

Estoy diseñando un juego simple de Android con una vista de superficie similar a la muestra de Lunar Lander proporcionada por Google. Quiero que aparezcan varias cosas como las puntuaciones altas, los mensajes, los menús, etc. en la pantalla con la vista de superficie todavía en segundo plano.Superposición de un diseño de Android en una vista de superficie

El problema es que quiero los "pop ups" para contener muchos elementos de diseño tales como imágenes, cuadros de texto, etc. ¿Hay una manera que puedo crear un diseño en XML para diseñar el pop-up que quiero y luego mostrar que sobre la vista de superficie como un objeto en lugar de tener que construir cada elemento individual uno por uno en el código y pintarlos todos en el lienzo?

Quiero animar las ventanas emergentes desde el lateral de la pantalla, por lo que sería bueno si diseño el diseño en XML para que todos los objetos conozcan su relación entre sí y luego anime ese diseño como un objeto .

Me parece algo bastante simple, pero parece que no puedo encontrar cómo lograrlo.

Respuesta

3

Una forma simple de hacerlo es crear su interfaz emergente como una actividad diferente. A continuación, le daría un tema de fondo transparente, como el tema Dialog, en su archivo de manifiesto.

Mire las muestras CustomDialog, Translucient y TranslucientBlur en demostraciones de API. Ellos crean tales actividades. El hecho de que la actividad subyacente esté en una superficie no debería cambiar nada.

6

Puede superponer elementos sobre SurfaceView en el código o en sus diseños 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> 

Y en su Actiivty:

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

no sabe acerca de los problemas de rendimiento sin embargo.

Cuestiones relacionadas