Disclaimer: questo è uno strano problema che si verifica solo in un Kindle Fire (finora).Kindle Fire modifica la risoluzione dello schermo ad un certo punto ...
Tecnologie coinvolte: Android SDK, Eclipse, LibGDX.
Ho un'applicazione relativamente semplice in esecuzione con LibGDX. Il modo in cui funziona LibGDX consiste nell'avere un thread OpenGL che chiamerà Create() (una volta) e quindi Render() il maggior numero possibile di volte (in modo da poter eseguire il rendering ...).
Così, quando si inizializza il dispositivo, viene chiamato il metodo "Create()" e quindi quando la superficie OpenGL viene inizializzata (tutto ciò avviene automaticamente), il Render() inizia a essere richiamato.
Se il contesto OpenGL viene perso, distrutto, ecc. Il metodo Ridimensiona (larghezza, altezza) viene chiamato da LibGDX.
Finora. Così buono.
Ora mi sono imbattuto in uno strano problema con un Kindle Fire in cui le cose sembravano pochi pixel o "tagliati". Il Kindle Fire ha una "barra morbida" nella parte inferiore dello schermo (20 pixel) che non puoi nascondere o saltare, che è "tipo ok" perché il dispositivo non ha pulsanti fisici. Dovresti toccare questa barra morbida e ottenere una barra più grande per tornare indietro, tornare a casa, ecc. Secondo Amazon, questa barra non può essere rimossa. (non è chiaro al 100% ma nessuno ha trovato il modo di non infrangere le regole di Amazon). L'unica app che ho visto che rimuove è quella dei video player di Amazon per i video in streaming dal cloud di Amazon solo. Quindi, come puoi vedere, non sembra esserci un modo per "permanentemente" nascondere quella barra.
Quindi se la barra è lì, lo stato reale dello schermo non è la risoluzione hardware 1024x600 (orizzontale) ma 1024x580. Così ho aggiunto un po 'di registrazione per i miei metodi per vedere cosa stava succedendo, ed è stato sorpreso con questo ... (ricordate il Create(), render() e ridimensionare() metodi):
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
Quindi lo schermo è stato "ridimensionato" dal Kindle Fire, "ad un certo punto".
Qualcuno si è imbattuto in qualcosa del genere?
Questo è uno screenshot (notare la barra nera in alto, che non è aggiunto da me!). Perdonami per aver offuscato l'immagine, ma questo è un progetto di un cliente e non posso "rivelare" nulla.
Il divertimento parte inizia quando volte, la barra non esserci e l'applicazione sarà simile al seguente (di nuovo, sry per la sfocatura). Si noti come la barra superiore non è lì ...
Dopo un esame più approfondito di entrambi i colpi, si può dire che il fondo (che dovrebbe essere lo stesso), non lo è. Il kindle sta facendo cose strane.
Qualche idea?
Gli asset erano originariamente imballati come 1024x600 ma lo abbiamo modificato (580 ora) e assumeremo che il viewport ora sia 1024x580 ma mi stavo chiedendo se qualcuno ha trovato un modo migliore per gestire queste sciocchezze?:)
note: we have android: theme = "@ android: style/Theme.NoTitleBar.Fullscreen" nel manifest. Non fa niente
Grazie in anticipo.
Non riesco a risolvere il problema con Kindle, ma il metodo resize() può essere chiamato in qualsiasi momento e non è correlato a una perdita di contesto. La perdita del contesto è indicata da una chiamata a riprendere(). – badlogic
@badlogic hi Mario;) (Gryzor qui). Sì, siamo in attesa del ridimensionamento() ma questo sembra essere un problema di Kindle Fire (riportato da altri). Amazon ha fatto qualcosa di brutto lì dentro ...: Grazie mille! –