Acerca de los tamaños de imágenes y activos de Android

Necesito aclarar algunas dudas sobre los activos de imagen para mi aplicación,

si especifico en un archivo xml que la altura de algo [vista de imagen] es 50 altura de inmersión

¿Qué tipo de pantalla debo elegir de la carpeta de recursos?

drawable, hdpi, ldpi, mdpi, xhdpi, 

tener la imagen de altura de 50 px,

y cuál es el porcentaje de imágenes más grandes y de menor tamaño en comparación con la imagen base,

como en iOS, @ 2x, es literalmente 2 veces el tamaño de la imagen, y dices programáticamente el tamaño normal,

¡Gracias!

mdpi es la densidad de referencia, es decir, 1 px en una pantalla mdpi es igual a 1 inmersión. La relación para escalar activos es:

 ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4 

Aunque en realidad no necesita preocuparse por tvdpi menos que esté desarrollando específicamente para Google TV o el Nexus 7 original, pero incluso Google recomienda simplemente usar activos de hdpi .

Lo que esto significa es que si está haciendo una imagen de 48dip y planea soportar una xxhdpi resolution hasta xxhdpi resolution , debe comenzar con una imagen de 144px (192px si desea recursos nativos para xxxhdpi) y hacer las siguientes imágenes para las densidades:

 ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 36 x 36 | 48 x 48 | 64 x 64 | 72 x 72 | 96 x 96 | 144 x 144 | 192 x 192 

Y estos deben mostrarse aproximadamente del mismo tamaño en cualquier dispositivo, siempre que los hayas colocado en carpetas específicas de densidad (por ejemplo drawable-xhdpi drawable-hdpi , drawable-hdpi , etc.)

Como referencia, las densidades de píxeles para estos son:

 ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 120 | 160 | 213 | 240 | 320 | 480 | 640 

Basado en la respuesta de Kcoppock , he creado la siguiente secuencia de comandos para cambiar automáticamente el tamaño de todas las imágenes al tamaño correcto y copiarlas en las respectivas carpetas * dibujables de Android.

Cree un script de shell y pegue el siguiente código:

createAndroidImages.sh

 #!/bin/bash read -p "Please enter the subfolder of the original images? " folder read -p "How many DP (width) should the image have? " dp for i in $(find $folder/. -type f -name "*[AZ]*"); do mv "$i" "$(echo $i | tr AZ az)"; done mkdir drawable-ldpi mkdir drawable-mdpi mkdir drawable-tvdpi mkdir drawable-hdpi mkdir drawable-xhdpi mkdir drawable-xxhdpi mkdir drawable-xxxhdpi cp $folder/* drawable-ldpi/ cp $folder/* drawable-mdpi/ cp $folder/* drawable-tvdpi/ cp $folder/* drawable-hdpi/ cp $folder/* drawable-xhdpi/ cp $folder/* drawable-xxhdpi/ cp $folder/* drawable-xxxhdpi/ sips -Z $(echo $dp*3/4 | bc) drawable-ldpi/* sips -Z $(echo $dp | bc) drawable-mdpi/* sips -Z $(echo $dp*4/3 | bc) drawable-tvdpi/* sips -Z $(echo $dp*3/2 | bc) drawable-hdpi/* sips -Z $(echo $dp*2 | bc) drawable-xhdpi/* sips -Z $(echo $dp*3 | bc) drawable-xxhdpi/* sips -Z $(echo $dp*4 | bc) drawable-xxxhdpi/* 

Coloque su secuencia de comandos en una carpeta y sus imágenes originales en una subcarpeta, por ejemplo:

 / .. createAndroidImages.sh .. originalImages/ ....a123.png ....b456.png 

Ejecute el script de shell en la terminal: sh createAndroidImages.sh

Para copiar las imágenes creadas directamente a su Android Studio Project:

 cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/ 

¡Terminaste! ¡Espero que esto ayude a alguien!

PD Tenga en cuenta que las imágenes originales deben tener al menos cuatro veces el ancho en píxeles, que el ancho deseado en dpi (por ej. 4 (factor xxxhdpi) * 30dpi => 120px) para obtener resultados óptimos.

Kcoppock hizo un gran trabajo al explicar las densidades de pantalla de Andorid. Solo me gustaría agregar un punto más con respecto a la pregunta original.

El ícono del iniciador de la tableta Android usa un cubo de densidad arriba.

De acuerdo con la publicación de Google+ del desarrollador de Google Nick Butcher

La hermosa pantalla en el Nexus 10 cae en el cubo de densidad XHDPI. En tabletas, Launcher usa icons de un cubo de densidad hacia arriba [0] para hacerlos un poco más grandes. Para asegurarse de que el ícono del iniciador (podría decirse que es el activo más importante de la aplicación) es nítido, debe agregar un icono de 144 * 144 px en la carpeta drawable-xxhdpi o drawable-480dpi.

Encuentra la fuente aquí

Aquí están mis cálculos para subir y bajar de imágenes para Android

lppi (120 dpi, pantalla de baja densidad) – 36px x 36px (0.19) (1)

mdpi (160 ppp, pantalla de densidad media) – 48px x 48px (0.25) (1.33)

hdpi (240 dpi, pantalla de alta densidad) – 72px x 72px (0,38) (2)

xhdpi (320 ppp, pantalla de densidad extra alta) – 96px x 96px (0.5) (2.67)

xxhdpi (480 ppp, pantalla Extra-extra-alta densidad) – 144px x 144px (0.75) (4)

xxxhdpi (640 ppp, pantalla Extra-extra-extra-alta densidad) – 192px x 192px (1.0) (5.33)

Mi breve artículo es útil para crear recursos de imágenes usando imagemgick, cuando hay múltiples imágenes.