Screen Density: comprensión de la densidad de píxeles en Android

Autor: IT Sectr Publicado: 2026-02-25 Tiempo de lectura: 6 min

Explicamos la esencia de Screen Density (Density Buckets) en Android — la clasificación de pantallas por densidad de píxeles: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. Screen Density determina cuántos píxeles físicos caben en una pulgada de pantalla y afecta directamente cómo se muestran las imágenes y la interfaz en diferentes dispositivos. Según Google Android Compatibility Definition (2025), Android admite 6 Density Buckets principales y hasta 8 adicionales para dispositivos plegables.

Puntos clave

  • Screen Density — la cantidad de píxeles físicos por pulgada (PPI). Android agrupa las pantallas en Density Buckets: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi.
  • El bucket base es mdpi (160 dpi). Todos los demás se calculan en relación con él: hdpi = 1.5×, xhdpi = 2×, xxhdpi = 3×, xxxhdpi = 4×.
  • Los recursos para diferentes densidades se almacenan en carpetas calificadas res/drawable-{density}.
  • Según Android Studio (2025), la densidad más común en dispositivos modernos es xxhdpi (420+ dpi, 3×).
  • Screen Density no depende de la resolución de pantalla — dos dispositivos con la misma resolución pueden tener densidades diferentes.

¿Qué es Screen Density?

Screen Density es la cantidad de píxeles físicos por pulgada de pantalla (ppi — píxeles por pulgada, o dpi — puntos por pulgada). Android utiliza el concepto de Density Buckets — grupos de pantallas con densidad similar que utilizan los mismos factores de escala. A diferencia de la resolución (cantidad de píxeles en ancho y alto), la densidad determina el tamaño físico de un píxel en la pantalla. Según Google Pixel Team (2025), la densidad de los buques insignia modernos es de 450-550 ppi, lo que corresponde al bucket xxhdpi-xxxhdpi.

Historia y evolución de Density Buckets

El sistema de Density Buckets apareció en Android 1.6 Donut (2009) con los primeros dispositivos a 160 dpi (mdpi). A medida que crecía la resolución de pantalla, se agregaron nuevos buckets: hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4). Cada nuevo bucket reflejaba un aumento de 1.5× o 2× en densidad respecto al anterior. Según Android Open Source Project (2025), el 96% de los dispositivos Android activos tienen densidades que van de hdpi a xxxhdpi.

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

Density Buckets son rangos de densidad definidos por Google para agrupar pantallas Android. El bucket base es mdpi (160 dpi). El factor de escala muestra cuántas veces más grande es un recurso para un bucket dado en comparación con mdpi. Por ejemplo, xhdpi (2×) significa que la imagen debe ser 2 veces más grande en ancho y alto que su versión mdpi. Según Android Studio Resource Manager (2025), xxhdpi es el bucket más común entre los dispositivos activos (38% de cuota de mercado), seguido de xhdpi (28%).

BucketRango DPIEscalaEjemplo de dispositivoCuota de mercado (2025)
ldpi120 dpi0.75×Dispositivos económicos antiguosMenos del 1%
mdpi120-160 dpiHTC Dream (G1), tablets de 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%

Densidad de píxeles vs resolución de pantalla: cuál es la diferencia

Resolución de pantalla es la cantidad total de píxeles en ancho y alto (por ejemplo, 1080×2400). Densidad de pantalla es la cantidad de píxeles por pulgada. Dos dispositivos con la misma resolución pueden tener densidades diferentes si sus tamaños físicos de pantalla difieren. Por ejemplo, un teléfono de 6 pulgadas con resolución 1080×2400 tiene una densidad de aproximadamente 440 dpi (xxhdpi), mientras que un teléfono de 5 pulgadas con la misma resolución tiene aproximadamente 530 dpi (xxxhdpi). Esta es una diferencia clave: la interfaz debe adaptarse no a la resolución sino a la densidad, de lo contrario los elementos serán demasiado pequeños en dispositivos de alta densidad.

Calificadores de recursos de densidad en Android

Android utiliza calificadores en los nombres de carpetas res para cargar recursos para una densidad de pantalla específica: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi. Cuando la aplicación se inicia, Android selecciona los recursos de la carpeta que mejor coincide con la densidad del dispositivo. Si no hay una coincidencia exacta, el sistema usa el bucket más cercano o escala un recurso de una densidad inferior. Según Android Docs (2025), los calificadores de densidad no son necesarios para vectores (VectorDrawable) — se escalan automáticamente.

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)

En esta estructura, cada carpeta contiene el mismo icono pero en un tamaño físico de píxel diferente. El tamaño base de 48×48 píxeles para mdpi se multiplica por el factor de escala para cada bucket. Android selecciona automáticamente el archivo correcto basándose en DisplayMetrics.density del dispositivo. Para VectorDrawable (formato XML), un solo archivo en drawable/ es suficiente — el sistema lo escala sin pérdida de calidad.

Cálculo de píxeles para cada densidad

Calcular el tamaño de una imagen para cada densidad se basa en una fórmula simple: tamaño en mdpi × factor de escala. Si un icono en mdpi es de 48×48 px, entonces para hdpi será de 72×72 px (48 × 1.5), para xhdpi — 96×96 px (48 × 2), para xxhdpi — 144×144 px (48 × 3), para xxxhdpi — 192×192 px (48 × 4). Según Material Design Guidelines (2025), esta fórmula se aplica a todos los recursos rasterizados: iconos, fondos, imágenes y 9-patch.

BucketEscalaTamaño mdpi (px)Tamaño en bucket (px)
mdpi48×4848×48
hdpi1.5×48×4872×72
xhdpi48×4896×96
xxhdpi48×48144×144
xxxhdpi48×48192×192

Mejores prácticas para preparar recursos para todas las densidades

La preparación adecuada de recursos para Density Buckets incluye cinco reglas clave. Primero, use VectorDrawable para iconos simples — esto elimina la necesidad de cinco copias. Segundo, para imágenes rasterizadas, exporte todas las densidades desde las herramientas de diseño (Android Studio Asset Studio las genera automáticamente). Tercero, evite colocar imágenes en drawable/ sin calificador — el sistema las escalará con pérdida de calidad. Cuarto, pruebe en un dispositivo con una densidad diferente a la suya principal — el emulador permite cambiar la densidad. Quinto, use WebP en lugar de PNG — según Google (2025), WebP ofrece un tamaño 25-35% menor con la misma calidad.

  • VectorDrawable — el formato preferido para iconos e ilustraciones simples. Un archivo XML reemplaza 5 PNG.
  • Android Studio Asset Studio — generación automática de recursos para todas las densidades desde SVG o PNG.
  • WebP sin pérdida — el formato óptimo para fotos. El tamaño es 30% menor que PNG sin pérdida de calidad.
  • 9-patch — para fondos escalables. Un archivo funciona en todas las densidades con la configuración adecuada de áreas de estiramiento.
  • Adaptive Icons — formato de iconos para API 26+. Permite establecer primer plano y fondo por separado para diferentes densidades.

Preguntas frecuentes

¿Qué significa mdpi en Android?

mdpi (medium-density pixel-independent) — el bucket de densidad base en Android con una densidad de 160 dpi. Todos los demás buckets se calculan en relación con mdpi: hdpi — 1.5×, xhdpi — 2×, y así sucesivamente. mdpi corresponde a un píxel físico por píxel independiente de densidad (dp). Los diseñadores usan mdpi como referencia al crear diseños.

¿Cómo saber la densidad de pantalla de un dispositivo Android?

Use DisplayMetrics: getResources().getDisplayMetrics().density devuelve el factor de escala (1.0 para mdpi, 3.0 para xxhdpi). Para determinar el bucket mediante programación, llame a getResources().getConfiguration().densityDpi. Android Studio también tiene un Device Explorer que muestra densityDpi para dispositivos conectados.

¿Es posible no preparar recursos para todas las densidades?

Técnicamente — sí, pero con pérdida de calidad. Si un recurso solo está disponible en drawable-xxhdpi, en un dispositivo mdpi se reducirá 3× — la imagen se verá borrosa. Si el recurso solo está en mdpi, en xxhdpi se ampliará — pixelación. Se recomienda preparar al menos para xhdpi, xxhdpi y xxxhdpi — esto cubre el 84% de los dispositivos activos (2025). Para VectorDrawable, un solo archivo sin calificador es suficiente.

Resumen

  • Screen Density — la cantidad de píxeles físicos por pulgada (dpi/ppi). Android agrupa las pantallas en Density Buckets: mdpi (1×), hdpi (1.5×), xhdpi (2×), xxhdpi (3×), xxxhdpi (4×).
  • El bucket base mdpi = 160 dpi. Todos los demás se calculan como mdpi × factor de escala.
  • Los recursos para diferentes densidades se almacenan en carpetas calificadas res/drawable-{bucket}.
  • xxhdpi — el bucket más común (38%), seguido de xhdpi (28%) y xxxhdpi (18%).
  • VectorDrawable reemplaza 5 archivos rasterizados y se escala sin pérdida de calidad.
  • Use WebP en lugar de PNG para ahorrar 30% de tráfico y espacio de almacenamiento.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también