2011-12-25 6 views
1

Dans mon application android, il y a un rendu OpenGL superposé sur un canevas. L'appareil sur lequel je teste est un Droid x.Comportement impair de la hauteur de l'écran en pixels?

Je déplace toutes les fonctions de dessin vers Open Gl mais j'ai remarqué un problème curieux.

Il semble que la toile commence à partir immédiatement après la barre de notification, mais le rendu GL commence à la pointe de l'écran.

Ceci est un peu important car la physique de mon jeu est basée sur les métriques de l'écran telles qu'elles ont été dessinées dans la toile.

Idéalement, je pense que je pourrais résoudre le problème en déplaçant d'une manière ou d'une autre le GLview par la hauteur de la barre de notification, mais je ne sais pas comment le faire ou si c'est possible.

Modifier le code suivant semble le rendre correct à partir de mon application, mais j'ai besoin d'un moyen de le rendre plus sécurisé sur plusieurs plates-formes.

je résoudre ce problème en changeant ...

gl.glViewport(0, 0, width, height) 

à

gl.glViewport(0, -38, width, height) 

Répondre

2

Utilisez-vous plusieurs dossiers étirables? Sur l'une de mes applications, j'utilise le code suivant, qui est basé sur l'obtention des dimensions du dessinable que le téléphone sélectionne.

image = bgtile.getWidth(); 

if (image == 32) { 
     gl.glViewport(0, -19, width, height) 
    } 
    if (image == 42) { 
     gl.glViewport(0, -25, width, height) 
    } 
    if (image == 64) { 
     gl.glViewport(0, -38, width, height) 
    } 

Si le téléphone sélectionne l'image LDPI, il fait la première if, mdpi la deuxième et la troisième LDPI. il suffit de changer le 32, 42 et 64 à la taille de votre image.

Questions connexes