2010-05-24 21 views
10

Estoy usando OpenGL para mostrar una vista de juego en mi aplicación de Android. El juego se basa en turnos y deseo agregar algunos botones a la interfaz. Preferiría usar widgets estándar de Android, estructurados en un diseño generado por XML (o, si es necesario, un diseño codificado) y poner la vista de OpenGL en su propia ventana como parte de ese diseño.OpenGL y diseños

Así, en lo que respecta a esto, tengo 3 preguntas:

1: ¿Es posible tal cosa? He hecho algunos intentos poco entusiastas, pero hasta ahora no he tenido suerte.

2: ¿Es esto aconsejable? ¿Tiene una penalización de rendimiento significativa, por ejemplo, sobre el uso de widgetry homebrew basado en OpenGL?

3: ¿Es posible pasar argumentos particulares a instancias creadas en diseños XML? Por ejemplo, mi vista OpenGL actual tiene tres argumentos en su constructor; ¿Es de alguna manera posible invocar ese constructor particular con parámetros particulares cuando es parte de un diseño?

Respuesta

14

No solo estas cosas son posibles, sino que son comunes. OpenGL SurfaceView es solo otra Vista en Android y puedes colocar todo lo que desees en la parte superior. En la aplicación que estoy construyendo usamos OpenGL para renderizar fondos interesantes mientras cubrimos todo el menú sobre el mismo. No hay preocupaciones de rendimiento más significativas que tendría con OpenGL por sí mismo. Puede usar diseños xml o generar todos sus elementos ui programáticamente o hacer alguna combinación de los dos. Incluso si desea usar xml para crear instancias de su interfaz de usuario, puede obtener acceso a los elementos y manipularlos en función del estado.

+0

De acuerdo, gracias. No he podido encontrar ningún ejemplo de esto hasta ahora, pero voy a ver más difícil ahora que sé que no es una pista sin salida. – Hnefi

+0

@CaseyB: quiero usar el diseño en mi aplicación LiveWallpaper con OpenGL, ¿así que es posible? –

+0

Nunca he hecho un fondo de pantalla en vivo, pero creo que utiliza un sistema diferente y necesita codificarlo usando RenderScript. – CaseyB