Screen Density: capire la densità di pixel in Android

Autore: IT Sectr Pubblicato: 2026-02-25 Tempo di lettura: 6 min

Spieghiamo l'essenza di Screen Density (Density Buckets) in Android — la classificazione degli schermi per densità di pixel: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. Screen Density determina quanti pixel fisici ci stanno in un pollice di schermo e influenza direttamente come immagini e interfaccia vengono visualizzate su diversi dispositivi. Secondo Google Android Compatibility Definition (2025), Android supporta 6 Density Buckets principali e fino a 8 aggiuntivi per dispositivi pieghevoli.

Punti chiave

  • Screen Density — il numero di pixel fisici per pollice (PPI). Android raggruppa gli schermi in Density Buckets: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi.
  • Il bucket base è mdpi (160 dpi). Tutti gli altri sono calcolati relativamente ad esso: hdpi = 1.5×, xhdpi = 2×, xxhdpi = 3×, xxxhdpi = 4×.
  • Le risorse per diverse densità sono memorizzate in cartelle qualificate res/drawable-{density}.
  • Secondo Android Studio (2025), la densità più comune sui dispositivi moderni è xxhdpi (420+ dpi, 3×).
  • Screen Density non dipende dalla risoluzione dello schermo — due dispositivi con la stessa risoluzione possono avere densità diverse.

Cos'è Screen Density?

Screen Density è il numero di pixel fisici per pollice di schermo (ppi — pixel per pollice, o dpi — punti per pollice). Android utilizza il concetto di Density Buckets — gruppi di schermi con densità simile che usano gli stessi fattori di scala. A differenza della risoluzione (numero di pixel in larghezza e altezza), la densità determina la dimensione fisica di un pixel sullo schermo. Secondo Google Pixel Team (2025), la densità dei flagship moderni è di 450-550 ppi, che corrisponde al bucket xxhdpi-xxxhdpi.

Storia ed evoluzione dei Density Buckets

Il sistema di Density Buckets è apparso in Android 1.6 Donut (2009) con i primi dispositivi a 160 dpi (mdpi). Con l'aumento delle risoluzioni dello schermo, sono stati aggiunti nuovi bucket: hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4). Ogni nuovo bucket rifletteva un aumento di densità di 1.5× o 2× rispetto al precedente. Secondo Android Open Source Project (2025), il 96% dei dispositivi Android attivi ora ha densità che vanno da hdpi a xxxhdpi.

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

Density Buckets sono intervalli di densità definiti da Google per raggruppare gli schermi Android. Il bucket base è mdpi (160 dpi). Il fattore di scala mostra quante volte più grande è una risorsa per un dato bucket rispetto a mdpi. Ad esempio, xhdpi (2×) significa che l'immagine deve essere 2 volte più grande in larghezza e altezza rispetto alla sua versione mdpi. Secondo Android Studio Resource Manager (2025), xxhdpi è il bucket più comune tra i dispositivi attivi (38% di quota di mercato), seguito da xhdpi (28%).

BucketIntervallo DPIScalaEsempio di dispositivoQuota di mercato (2025)
ldpi120 dpi0.75×Vecchi dispositivi economiciMeno dell'1%
mdpi120-160 dpiHTC Dream (G1), tablet 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à di pixel vs risoluzione dello schermo: qual è la differenza

La risoluzione dello schermo è il numero totale di pixel in larghezza e altezza (es. 1080×2400). La densità dello schermo è il numero di pixel per pollice. Due dispositivi con la stessa risoluzione possono avere densità diverse se le loro dimensioni fisiche dello schermo differiscono. Ad esempio, un telefono da 6 pollici con risoluzione 1080×2400 ha una densità di circa 440 dpi (xxhdpi), mentre un telefono da 5 pollici con la stessa risoluzione ha circa 530 dpi (xxxhdpi). Questa è una differenza fondamentale: l'interfaccia deve adattarsi non alla risoluzione ma alla densità, altrimenti gli elementi saranno troppo piccoli sui dispositivi ad alta densità.

Qualificatori di risorse di densità in Android

Android utilizza qualificatori nei nomi delle cartelle res per caricare risorse per una specifica densità dello schermo: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi. All'avvio dell'applicazione, Android seleziona le risorse dalla cartella che meglio corrisponde alla densità del dispositivo. Se non c'è una corrispondenza esatta, il sistema utilizza il bucket più vicino o scala una risorsa da una densità inferiore. Secondo Android Docs (2025), i qualificatori di densità non sono necessari per i vettori (VectorDrawable) — vengono scalati automaticamente.

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)

In questa struttura, ogni cartella contiene la stessa icona ma in una diversa dimensione fisica in pixel. La dimensione base di 48×48 pixel per mdpi viene moltiplicata per il fattore di scala di ogni bucket. Android seleziona automaticamente il file corretto in base a DisplayMetrics.density del dispositivo. Per VectorDrawable (formato XML), un singolo file in drawable/ è sufficiente — il sistema lo scala senza perdita di qualità.

Calcolo dei pixel per ogni densità

Il calcolo della dimensione di un'immagine per ogni densità si basa su una formula semplice: dimensione in mdpi × fattore di scala. Se un'icona in mdpi è 48×48 px, per hdpi sarà 72×72 px (48 × 1.5), per xhdpi — 96×96 px (48 × 2), per xxhdpi — 144×144 px (48 × 3), per xxxhdpi — 192×192 px (48 × 4). Secondo le Material Design Guidelines (2025), questa formula si applica a tutte le risorse raster: icone, sfondi, immagini e 9-patch.

BucketScalaDimensione mdpi (px)Dimensione nel bucket (px)
mdpi48×4848×48
hdpi1.5×48×4872×72
xhdpi48×4896×96
xxhdpi48×48144×144
xxxhdpi48×48192×192

Migliori pratiche per preparare le risorse per tutte le densità

La corretta preparazione delle risorse per Density Buckets include cinque regole chiave. Primo, usa VectorDrawable per icone semplici — questo elimina la necessità di cinque copie. Secondo, per immagini raster, esporta tutte le densità dagli strumenti di progettazione (Android Studio Asset Studio le genera automaticamente). Terzo, evita di mettere immagini in drawable/ senza qualificatore — il sistema le scalerà con perdita di qualità. Quarto, testa su un dispositivo con densità diversa dal tuo principale — l'emulatore permette di cambiare la densità. Quinto, usa WebP invece di PNG — secondo Google (2025), WebP offre una dimensione del 25-35% inferiore a parità di qualità.

  • VectorDrawable — il formato preferito per icone e illustrazioni semplici. Un file XML sostituisce 5 PNG.
  • Android Studio Asset Studio — generazione automatica di risorse per tutte le densità da SVG o PNG.
  • WebP senza perdita — il formato ottimale per le foto. Dimensioni inferiori del 30% rispetto al PNG senza perdita di qualità.
  • 9-patch — per sfondi scalabili. Un file funziona su tutte le densità con la corretta configurazione delle aree di stiramento.
  • Adaptive Icons — formato icona per API 26+. Permette di impostare primo piano e sfondo separatamente per diverse densità.

Domande frequenti

Cosa significa mdpi in Android?

mdpi (medium-density pixel-independent) — il bucket di densità base in Android con una densità di 160 dpi. Tutti gli altri bucket sono calcolati relativamente a mdpi: hdpi — 1.5×, xhdpi — 2× e così via. mdpi corrisponde a un pixel fisico per pixel indipendente dalla densità (dp). I designer usano mdpi come riferimento durante la creazione dei layout.

Come scoprire la densità dello schermo di un dispositivo Android?

Usa DisplayMetrics: getResources().getDisplayMetrics().density restituisce il fattore di scala (1.0 per mdpi, 3.0 per xxhdpi). Per determinare programmaticamente il bucket, chiama getResources().getConfiguration().densityDpi. Android Studio ha anche un Device Explorer che mostra densityDpi per i dispositivi connessi.

Si può evitare di preparare risorse per tutte le densità?

Tecnicamente — sì, ma con perdita di qualità. Se una risorsa è disponibile solo in drawable-xxhdpi, su un dispositivo mdpi verrà ridotta di 3× — l'immagine diventerà sfocata. Se la risorsa è solo in mdpi, su xxhdpi verrà ingrandita — pixelizzazione. Si raccomanda di preparare almeno per xhdpi, xxhdpi e xxxhdpi — questo copre l'84% dei dispositivi attivi (2025). Per VectorDrawable, un singolo file senza qualificatore è sufficiente.

Riepilogo

  • Screen Density — il numero di pixel fisici per pollice (dpi/ppi). Android raggruppa gli schermi in Density Buckets: mdpi (1×), hdpi (1.5×), xhdpi (2×), xxhdpi (3×), xxxhdpi (4×).
  • Il bucket base mdpi = 160 dpi. Tutti gli altri sono calcolati come mdpi × fattore di scala.
  • Le risorse per diverse densità sono memorizzate in cartelle qualificate res/drawable-{bucket}.
  • xxhdpi — il bucket più comune (38%), seguito da xhdpi (28%) e xxxhdpi (18%).
  • VectorDrawable sostituisce 5 file raster e si scala senza perdita di qualità.
  • Usa WebP invece di PNG per risparmiare il 30% di traffico e spazio di archiviazione.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche