133 votes

Comment vérifier qu'un périphérique Android est un écran HDPI ou un écran MDPI?

Je veux vérifier ceci pour aller chercher différentes images par internet. Comment faire ça?

236voto

SteD Points 5599
density = getResources().getDisplayMetrics().density;

// return 0.75 if it's LDPI
// return 1.0 if it's MDPI
// return 1.5 if it's HDPI
// return 2.0 if it's XHDPI

190voto

Ted Hopp Points 122617

Vous pouvez vérifier la densité de l'écran avec:

 switch (getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
    // ...
    break;
case DisplayMetrics.DENSITY_MEDIUM:
    // ...
    break;
case DisplayMetrics.DENSITY_HIGH:
    // ...
    break;
case DisplayMetrics.DENSITY_XHIGH:
    // ...
    break;
}
 

EDIT Sachez qu'au fur et à mesure qu'Android évolue, d'autres valeurs doivent être incluses dans les cas switch . À partir de cette vérification, cela inclut DisplayMetrics.DENSITY_TV et DisplayMetrics.DENSITY_XXHIGH . Consultez la documentation pour les dernières informations. Je ne vais pas me soucier de maintenir cette réponse.

1voto

nlt Points 397

Sur certains appareils (le mien est Galaxy Tab3), à la fois de la densité et de densityDpi retour étrange valeurs comme 1.33(densité), 213(densityDpi). Donc ma solution est d'ajouter ces drapeau :

<item type="boolean" name="is_mdpi">[bool]</item>
<item type="boolean" name="is_hdpi">[bool]</item>
<item type="boolean" name="is_xhdpi">[bool]</item>
<item type="boolean" name="is_xxhdpi">[bool]</item>

pour 4 values.xml fichiers, placez-le sous les res/values-[xxx]/ dossiers.

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