Skip to content

Most visited

Recently visited

navigation

Compatibilidad con diferentes densidades

Esta lección te muestra cómo admitir diferentes densidades de pantalla al proporcionar diferentes recursos y utilizar unidades de medida independientes de la resolución.

Cómo utilizar píxeles independientes de la densidad

Un inconveniente común que debes evitar cuando creas tus diseños es el uso píxeles absolutos para definir distancias o tamaños. Definir dimensiones de diseño con píxeles es un problema, ya que pantallas diferentes tienen densidades de píxeles diferentes. Por lo tanto, el mismo número de píxeles puede corresponder a diferentes tamaños físicos en distintos dispositivos. Por esta razón, cuando especifiques dimensiones, utiliza siempre las unidades dp o sp. Un dp es un píxel independiente de la densidad que corresponde al tamaño físico de un píxel a 160 dpi. Un sp es la misma unidad base, pero se escala según el tamaño de texto preferido por el usuario (es un píxel independiente de la escala), por lo que deberías utilizar esta unidad de medida cuando definas el tamaño de texto (pero nunca para tamaños de diseño).

Video

DesignBytes: Píxeles independientes de la densidad


Por ejemplo, cuando especificas el espacio entre dos vistas, utiliza dp en lugar de px:

<Button android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/clickme"
    android:layout_marginTop="20dp" />

Para especificar tamaño de texto, siempre utiliza sp:

<TextView android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp" />

Cómo proporcionar mapas de bits alternativos

Dado que Android se ejecuta en dispositivos con un alto número de densidades de pantalla diferentes, siempre deberías proporcionar tus recursos de mapas de bits adaptados a cada uno de los conjuntos de densidades generalizados: baja, media, alta y muy alta. Esto te ayudará a conseguir buena calidad gráfica y buen rendimiento en todas las densidades de pantalla.

Para generar esas imágenes, debes comenzar con tu recurso sin procesar en formato de vector y generar las imágenes para cada densidad mediante la siguiente escala de tamaño:

Esto significa que si generas una imagen de 200x200 para dispositivos xhdpi , deberías generar el mismo recurso en 150x150 para dispositivos hdpi, 100x100 para dispositivos mdpi y 75x75 para dispositivos ldpi .

Luego, sitúa los archivos de imagen generados en el subdirectorio adecuado en res/ y el sistema seleccionará el archivo correcto automáticamente en función de la densidad de la pantalla del dispositivo en el que se esté ejecutando tu aplicación:

MyProject/
  res/
    drawable-xhdpi/
        awesomeimage.png
    drawable-hdpi/
        awesomeimage.png
    drawable-mdpi/
        awesomeimage.png
    drawable-ldpi/
        awesomeimage.png

De esta forma, cada vez que hagas referencia a @drawable/awesomeimage, el sistema selecciona el mapa de bits apropiado en función de los dpi de la pantalla.

Coloca los íconos de tu lanzador en las carpetas mipmap/.

res/...
    mipmap-ldpi/...
        finished_launcher_asset.png
    mipmap-mdpi/...
        finished_launcher_asset.png
    mipmap-hdpi/...
        finished_launcher_asset.png
    mipmap-xhdpi/...
        finished_launcher_asset.png
    mipmap-xxhdpi/...
        finished_launcher_asset.png
    mipmap-xxxhdpi/...
        finished_launcher_asset.png

Nota: Deberías colocar todos los íconos del lanzador en las carpetas res/mipmap-[density]/, en lugar de en las carpetas drawable/ para asegurarte de que las apps lanzadoras utilicen el ícono de mejor resolución. Para obtener más información sobre el uso de las carpetas mipmap, consulta Información general sobre la administración de proyectos.

Para obtener más pautas y sugerencias sobre cómo crear recursos de íconos para tu aplicación, consulta las Pautas para el diseño de íconos.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)