6
votes

Android Obtenir la taille de l'écran de l'autre orientation de l'écran

Depuis Android 3.0 Il existe une barre de navigation avec le bouton de retour et de la maison à l'écran. Maintenant, si je reçois la taille de l'écran comme celle-ci xxx

de cette xxx

i obtenir des valeurs différentes pour le paysage et le portrait. Voici un exemple de ce que je veux dire:

Acer iconia A500 Mode portrait: 800 x 1232 Acer Iconia A500 Mode paysage: 1280 x 752

AFAIK Ceci va pour tous les appareils avec une barre de navigation. (par exemple, Samsung Galaxy Nexus, Galaxytab 10.1.)

Maintenant ma question est, si je suis en mode portrait, comment puis-je obtenir les valeurs du mode paysage et de l'inverse?


0 commentaires

3 Réponses :


1
votes

Depuis Android 3, l'API publique n'a aucun moyen de revenir sur l'heigth et la largeur brutes. Vous pouvez passer par la réflexion. Recherchez Getrawheigth / Width


4 commentaires

Ce n'est pas vraiment la hauteur brute une largeur que je veux. Ce sont les valeurs de largeur et de hauteur après la soustraction de la hauteur de la barre de navigation, mais de l'autre orientation.


Je ne sais pas comment je peux obtenir la hauteur de la barre de navigation. (contenant le bouton du dos et de la maison, je ne sais pas comment cette barre est appelée correctement.)


Poids - Display.Egtheight () devrait vous donner la hauteur de la barre


ne marche pas. La barre est sur certains appareils à droite de l'écran au lieu de le bas.



0
votes

Voici une solution qui fonctionne pour moi. J'ai une taille réelle de l'écran, puis soustrayez la hauteur de la barre de navigation. xxx

si votre application a une barre d'état xxx


0 commentaires

1
votes

EDIT (26 septembre 2014): J'ai reformulé mon texte pour contenir une réponse complète et non seulement commentaire à Dmitri Solution.

Voici la partie que nous utilisons pour calculer la hauteur de la barre de navigation avant la rotation: p >

int realScreenHeight = metrics.heightPixels + navBarHeight;

// We expect to not have decor views near the left or right borders
int realScreenWidth = metrics.widthPixels;

/*
 * Height of decor views: system status bar + any application addtional elements + 
 * + system navigation bar
 */
int decorHeightRotated = realScreenHeight - getHeight() - navBarHeight + navBarHeightRotated; 

int viewWidthRotated = realScreenHeight;
int viewHeightRotated = (realScreenWidth - decorHeightRotated);
NCLogs.i("MyApp", String.format("Width after rotation: %d, Height after rotation: %d", viewWidthRotated, viewHeightRotated));


0 commentaires