2 votes

Android getDisplayMetrics() ne renvoie pas la taille d'affichage exacte

J'essaie d'obtenir la largeur/hauteur en pixels du dispositif pour placer les éléments et mapper les événements tactiles sur l'écran, mais je n'obtiens pas l'effet désiré (remarquez que le carré en bas à droite doit être complètement à fleur avec le bas à droite) :

White square should be flush in the lower right corner

// screen size
    DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
    float ScrDensity = metrics.density;
    int metricHeight = metrics.heightPixels;//
    int metricWidth = metrics.widthPixels;//

    Log.i("AllMetrics", metrics.toString());

    // temp
    int rightButton_diameter = 100;
    int rightButton_xpos = metricWidth - rightButton_diameter;
    int rightButton_ypos = metricHeight - rightButton_diameter;

Où AllMetrics revient :

DisplayMetrics{density=2.0, width=720, height=1184, scaledDensity=2.0, xdpi=320.0, ydpi=320.0}

Je remarque que la hauteur renvoyée est également différente de celle de 720x1280 indiquée dans le Virtual Device Manager (API 19, Android 4.4) et que les positions x/y des événements tactiles semblent correspondre aux éléments dessinés (c'est-à-dire que la zone cliquable du bouton est la même que celle où il est dessiné).

Est-ce une erreur de configuration ou est-ce que j'utilise une méthode incorrecte pour récupérer la position de l'écran ?

2voto

Yogesh Rathi Points 3528

Vérifiez ce code, il fonctionne pour moi

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;

En dehors de l'activité, vous pouvez essayer ceci

 ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm)

0voto

sudo Points 401

Pour accéder aux membres de DisplayMetrics, initialiser un objet comme ceci :

DisplayMetrics metrics = new DisplayMetrics() ; getWindowManager().getDefaultDisplay().getMetrics(metrics) ;

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