Screen Density : comprendre la densité de pixels dans Android

Auteur : IT Sectr Publié le : 2026-02-25 Temps de lecture : 6 min

Nous expliquons l'essence de Screen Density (Density Buckets) dans Android — la classification des écrans par densité de pixels : mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. Screen Density détermine le nombre de pixels physiques contenus dans un pouce d'écran et affecte directement la façon dont les images et l'interface sont affichées sur différents appareils. Selon Google Android Compatibility Definition (2025), Android prend en charge 6 Density Buckets principaux et jusqu'à 8 supplémentaires pour les appareils pliables.

Points clés

  • Screen Density — le nombre de pixels physiques par pouce (PPI). Android regroupe les écrans en Density Buckets : mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi.
  • Le bucket de base est mdpi (160 dpi). Tous les autres sont calculés par rapport à lui : hdpi = 1.5×, xhdpi = 2×, xxhdpi = 3×, xxxhdpi = 4×.
  • Les ressources pour différentes densités sont stockées dans des dossiers qualifiés res/drawable-{density}.
  • Selon Android Studio (2025), la densité la plus courante sur les appareils modernes est xxhdpi (420+ dpi, 3×).
  • Screen Density ne dépend pas de la résolution de l'écran — deux appareils avec la même résolution peuvent avoir des densités différentes.

Qu'est-ce que Screen Density ?

Screen Density est le nombre de pixels physiques par pouce d'écran (ppi — pixels par pouce, ou dpi — points par pouce). Android utilise le concept de Density Buckets — des groupes d'écrans de densité similaire qui utilisent les mêmes facteurs d'échelle. Contrairement à la résolution (nombre de pixels en largeur et hauteur), la densité détermine la taille physique d'un pixel à l'écran. Selon Google Pixel Team (2025), la densité des flagships modernes est de 450 à 550 ppi, ce qui correspond au bucket xxhdpi-xxxhdpi.

Histoire et évolution des Density Buckets

Le système de Density Buckets est apparu dans Android 1.6 Donut (2009) avec les premiers appareils à 160 dpi (mdpi). Avec l'augmentation des résolutions d'écran, de nouveaux buckets ont été ajoutés : hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4). Chaque nouveau bucket reflétait une augmentation de densité de 1.5× ou 2× par rapport au précédent. Selon Android Open Source Project (2025), 96% des appareils Android actifs ont désormais des densités allant de hdpi à xxxhdpi.

Density Buckets : mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi

Density Buckets sont des plages de densité définies par Google pour regrouper les écrans Android. Le bucket de base est mdpi (160 dpi). Le facteur d'échelle indique combien de fois une ressource pour un bucket donné est plus grande que celle pour mdpi. Par exemple, xhdpi (2×) signifie que l'image doit être 2 fois plus grande en largeur et en hauteur que sa version mdpi. Selon Android Studio Resource Manager (2025), xxhdpi est le bucket le plus courant parmi les appareils actifs (38% de part de marché), suivi de xhdpi (28%).

BucketPlage DPIÉchelleExemple d'appareilPart de marché (2025)
ldpi120 dpi0.75×Anciens appareils économiquesMoins de 1%
mdpi120-160 dpiHTC Dream (G1), tablettes 7"3%
hdpi160-240 dpi1.5×Samsung Galaxy S2, Nexus 412%
xhdpi240-320 dpiGoogle Nexus 5, Moto G28%
xxhdpi320-480 dpiSamsung Galaxy S8, Pixel 338%
xxxhdpi480-640 dpiSamsung Galaxy S24 Ultra, Pixel 9 Pro18%

Densité de pixels vs résolution d'écran : quelle est la différence

La résolution d'écran est le nombre total de pixels en largeur et hauteur (ex. 1080×2400). La densité d'écran est le nombre de pixels par pouce. Deux appareils avec la même résolution peuvent avoir des densités différentes si leurs tailles physiques d'écran diffèrent. Par exemple, un téléphone de 6 pouces avec une résolution de 1080×2400 a une densité d'environ 440 dpi (xxhdpi), tandis qu'un téléphone de 5 pouces avec la même résolution a environ 530 dpi (xxxhdpi). C'est une différence clé : l'interface doit s'adapter non pas à la résolution mais à la densité, sinon les éléments seront trop petits sur les appareils à haute densité.

Qualificateurs de ressources de densité dans Android

Android utilise des qualificateurs dans les noms de dossiers res pour charger des ressources pour une densité d'écran spécifique : drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi. Au démarrage de l'application, Android sélectionne les ressources du dossier qui correspond le mieux à la densité de l'appareil. S'il n'y a pas de correspondance exacte, le système utilise le bucket le plus proche ou met à l'échelle une ressource d'une densité inférieure. Selon Android Docs (2025), les qualificateurs de densité ne sont pas nécessaires pour les vecteurs (VectorDrawable) — ils se mettent à l'échelle automatiquement.

XML

/res/
    drawable-mdpi/
        icon_app.png  (48x48 px)
    drawable-hdpi/
        icon_app.png  (72x72 px)
    drawable-xhdpi/
        icon_app.png  (96x96 px)
    drawable-xxhdpi/
        icon_app.png  (144x144 px)
    drawable-xxxhdpi/
        icon_app.png  (192x192 px)

Dans cette structure, chaque dossier contient la même icône mais dans une taille physique de pixel différente. La taille de base de 48×48 pixels pour mdpi est multipliée par le facteur d'échelle pour chaque bucket. Android sélectionne automatiquement le fichier correct en fonction de DisplayMetrics.density de l'appareil. Pour VectorDrawable (format XML), un seul fichier dans drawable/ suffit — le système le met à l'échelle sans perte de qualité.

Calcul des pixels pour chaque densité

Le calcul de la taille d'une image pour chaque densité repose sur une formule simple : taille en mdpi × facteur d'échelle. Si une icône en mdpi fait 48×48 px, alors pour hdpi elle fera 72×72 px (48 × 1.5), pour xhdpi — 96×96 px (48 × 2), pour xxhdpi — 144×144 px (48 × 3), pour xxxhdpi — 192×192 px (48 × 4). Selon les Material Design Guidelines (2025), cette formule s'applique à toutes les ressources raster : icônes, fonds, images et 9-patch.

BucketÉchelleTaille mdpi (px)Taille dans le bucket (px)
mdpi48×4848×48
hdpi1.5×48×4872×72
xhdpi48×4896×96
xxhdpi48×48144×144
xxxhdpi48×48192×192

Bonnes pratiques pour préparer les ressources pour toutes les densités

La bonne préparation des ressources pour Density Buckets comprend cinq règles clés. Premièrement, utilisez VectorDrawable pour les icônes simples — cela élimine le besoin de cinq copies. Deuxièmement, pour les images raster, exportez toutes les densités depuis les outils de conception (Android Studio Asset Studio les génère automatiquement). Troisièmement, évitez de placer des images dans drawable/ sans qualificateur — le système les mettra à l'échelle avec perte de qualité. Quatrièmement, testez sur un appareil avec une densité différente de votre appareil principal — l'émulateur permet de changer la densité. Cinquièmement, utilisez WebP au lieu de PNG — selon Google (2025), WebP offre une taille 25 à 35% inférieure à qualité égale.

  • VectorDrawable — le format préféré pour les icônes et illustrations simples. Un fichier XML remplace 5 PNG.
  • Android Studio Asset Studio — génération automatique de ressources pour toutes les densités à partir de SVG ou PNG.
  • WebP sans perte — le format optimal pour les photos. Taille 30% inférieure au PNG sans perte de qualité.
  • 9-patch — pour les fonds redimensionnables. Un fichier fonctionne sur toutes les densités avec une configuration appropriée des zones d'étirement.
  • Adaptive Icons — format d'icônes pour API 26+. Permet de définir le premier plan et l'arrière-plan séparément pour différentes densités.

Foire aux questions

Que signifie mdpi dans Android ?

mdpi (medium-density pixel-independent) — le bucket de densité de base dans Android avec une densité de 160 dpi. Tous les autres buckets sont calculés par rapport à mdpi : hdpi — 1.5×, xhdpi — 2×, etc. mdpi correspond à un pixel physique par pixel indépendant de la densité (dp). Les concepteurs utilisent mdpi comme référence lors de la création de maquettes.

Comment connaître la densité d'écran d'un appareil Android ?

Utilisez DisplayMetrics : getResources().getDisplayMetrics().density renvoie le facteur d'échelle (1.0 pour mdpi, 3.0 pour xxhdpi). Pour déterminer programmatiquement le bucket, appelez getResources().getConfiguration().densityDpi. Android Studio dispose également d'un Device Explorer qui affiche densityDpi pour les appareils connectés.

Est-il possible de ne pas préparer de ressources pour toutes les densités ?

Techniquement — oui, mais avec une perte de qualité. Si une ressource n'est disponible que dans drawable-xxhdpi, sur un appareil mdpi elle sera réduite 3× — l'image deviendra floue. Si la ressource n'est que dans mdpi, sur xxhdpi elle sera agrandie — pixellisation. Il est recommandé de préparer au moins pour xhdpi, xxhdpi et xxxhdpi — cela couvre 84% des appareils actifs (2025). Pour VectorDrawable, un seul fichier sans qualificateur suffit.

Résumé

  • Screen Density — le nombre de pixels physiques par pouce (dpi/ppi). Android regroupe les écrans en Density Buckets : mdpi (1×), hdpi (1.5×), xhdpi (2×), xxhdpi (3×), xxxhdpi (4×).
  • Le bucket de base mdpi = 160 dpi. Tous les autres sont calculés comme mdpi × facteur d'échelle.
  • Les ressources pour différentes densités sont stockées dans des dossiers qualifiés res/drawable-{bucket}.
  • xxhdpi — le bucket le plus courant (38%), suivi de xhdpi (28%) et xxxhdpi (18%).
  • VectorDrawable remplace 5 fichiers raster et se met à l'échelle sans perte de qualité.
  • Utilisez WebP au lieu de PNG pour économiser 30% de trafic et d'espace de stockage.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi