Descargo de responsabilidad: este es un problema extraño que solo ocurre en un Kindle Fire (hasta ahora).Kindle Fire cambia resolución de pantalla en algún momento ...
Tecnologías implicadas: Android SDK, Eclipse, LibGDX.
Tengo una aplicación relativamente simple ejecutándose con LibGDX. La forma en que funciona LibGDX es tener un hilo de OpenGL que llamará a Create() (una vez) y luego a Render() tantas veces como sea posible (para que pueda hacer su render ...).
Así que cuando inicializa el Dispositivo, se invoca su método "Crear()" y luego, cuando se inicializa la superficie OpenGL (todo esto sucede automágicamente), su Render() comienza a recibir llamadas.
Si el contexto de OpenGL se pierde, se destruye, etc. LibGDX llama al método de Redimensionar (ancho, alto).
Hasta ahora. Tan bueno.
Ahora me encontré con un problema extraño con un Kindle Fire donde las cosas se veían unos pocos píxeles apagados o "cortados". El Kindle Fire tiene una "barra de software" en la parte inferior de la pantalla (20 píxeles) que no se puede ocultar u omitir, lo que es "bueno" porque el dispositivo no tiene botones físicos. Se espera que toques esta barra suave y obtengas una barra más grande para volver, ir a casa, etc. Según Amazon, esta barra no se puede quitar. (No está 100% claro, pero nadie ha encontrado una manera, eso no está rompiendo las reglas de Amazon). La única aplicación que he visto que elimina es Amazon Reproductores de video para videos que se transmiten desde la nube de Amazon solo. Como puede ver, no parece haber una forma de ocultar "permanentemente" esa barra.
Por lo tanto, si la barra está allí, su estado de pantalla real no es la resolución de hardware 1024x600 (horizontal) sino 1024x580. Por lo que añade un poco de la tala a mis métodos para ver lo que estaba pasando, y se sorprendió con esta ... (recordemos el create(), render() y cambiar el tamaño() métodos):
12-23 15:17:04.119: I/myapp(19921): SCREEN HEIGHT AT CREATE(): 600
[snip other unrelated log stuff]
12-23 15:17:04.673: I/myapp(19921): SCREEN HEIGHT AT RENDER() LOOP: 600
[snip other unrelated log stuff]
12-23 15:17:04.705: I/myapp(19921): MyApp - Resize() Called.
12-23 15:17:04.705: I/myapp(19921): SCREEN HEIGHT AT RENDER() LOOP: 580
así que la pantalla ha sido "redimensionado" por Kindle Fire, "en algún momento".
¿Alguien ha encontrado algo como esto?
Esta es una captura de pantalla (observe la barra negra en la parte superior, eso no es agregado por mí). Perdóname por difuminar la imagen, pero este es un proyecto del cliente y no puedo "revelar" nada.
La diversión comienza cuando parte veces, la barra no estar allí y la aplicación se verá como la siguiente (de nuevo, sry para la falta de definición). Observe cómo la barra superior no está allí ...
Tras un examen más detenido de los dos disparos, se puede decir que la parte inferior (que debe ser el mismo), no lo es. El kindle está haciendo cosas extrañas.
¿Alguna idea?
Los activos se embalaron originalmente como 1024x600, pero hemos cambiado eso (580 ahora) y asumiremos que la ventana gráfica ahora es 1024x580, pero me preguntaba si alguien encontró una mejor manera de lidiar con esta tontería.:)
nota: tenemos android: theme = "@ android: estilo/Theme.NoTitleBar.Fullscreen" en el manifiesto. No hace nada.
Gracias de antemano.
No puedo ayudar con el problema de Kindle en sí, pero el método resize() se puede llamar en cualquier momento y no está relacionado con una pérdida de contexto. La pérdida de contexto se indica mediante una llamada a resume(). – badlogic
@badlogic hi Mario;) (Gryzor aquí). Sí, estamos pendientes de cambiar el tamaño() pero parece ser un problema de Kindle Fire (informado por otros). Amazon hizo algo desagradable allí ...: S gracias a ' –