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 de cette p> i obtenir des valeurs différentes pour le paysage et le portrait. Voici un exemple de ce que je veux dire: p> Acer iconia A500 Mode portrait: 800 x 1232
Acer Iconia A500 Mode paysage: 1280 x 752 P> AFAIK Ceci va pour tous les appareils avec une barre de navigation. (par exemple, Samsung Galaxy Nexus, Galaxytab 10.1.) P> Maintenant ma question est, si je suis en mode portrait, comment puis-je obtenir les valeurs du mode paysage et de l'inverse? P> p>
3 Réponses :
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 P>
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.
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. si votre application a une barre d'état p>
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));