55 votes

Comment obtenir la largeur et la hauteur de l'écran

J'ai essayé d'utiliser le code suivant pour obtenir la largeur et la hauteur de l'écran dans le développement d'applications Android:

 Display display = getWindowManager().getDefaultDisplay(); 
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
 

mais j'ai eu NullPointerException pour mon display , pourquoi? comment obtenir la largeur et la hauteur de l'écran alors?

133voto

areyling Points 893

Si vous appelez cela en dehors d'une activité, vous devrez transmettre le contexte (ou le transmettre via un autre appel). Ensuite, utilisez cela pour obtenir vos métriques d'affichage:

 DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
 

41voto

Khulja Sim Sim Points 460

Dans une activité, vous pouvez appeler:

 int width = this.getResources().getDisplayMetrics().widthPixels;
int height = this.getResources().getDisplayMetrics().heightPixels;
 

Lorsque vous êtes dans une vue, vous devez d'abord obtenir le contexte:

 int width = getApplicationContext().getResources().getDisplayMetrics().widthPixels;
int height = getApplicationContext().getResources().getDisplayMetrics().heightPixels;
 

Cela fonctionnera dans toutes les versions d'Android, disponible depuis l'API 1, et jamais obsolète.

19voto

Maidul Points 838

De service:

 Display  display= ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth(); 
int height = display.getHeight(); 
 

15voto

fritz Points 131

C'est ce qui a finalement fonctionné pour moi:

 DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
 

13voto

MrJre Points 3725

Essayez via context.getResources().getDisplayMetrics() si vous avez un contexte disponible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X