80

tengo que aclarar algunas dudas sobre los activos de imagen para mi aplicación,Acerca de imagen y activo Android tamaños

si puedo especificar en un archivo XML que la altura de algo [ver imagen] es la altura 50 de inmersión

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

drawable, hdpi, ldpi, mdpi, xhdpi, 

para tener imagen de altura el 50 px,

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

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

gracias!

+1

Su pregunta se explica en el manual de Android: http://developer.android.com/guide/practices/screens_support.html –

Respuesta

349

mdpi es la densidad de referencia, es decir, 1 px en un mdpi pantalla es igual a 1 dip. La relación de escala activo es:

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

A pesar de que en realidad no tiene que preocuparse por tvdpi a menos que esté específicamente para el desarrollo de Google TV o el Nexus 7 original - pero incluso Google recomienda el simple uso de hdpi activos.

Lo que esto significa es que si está haciendo una imagen de 48dip y planea soportar hasta xxhdpi resolution, debe comenzar con una imagen de 144px (192px si desea activos 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 mostrar al menos del mismo tamaño en cualquier dispositivo, a condición de que haya colocado estos en carpetas densidad específica (por ejemplo drawable-xhdpi, 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 
+31

Esta es la explicación más fácil de este tema que he visto en línea en cualquier lugar. Literalmente libro marcado en mi estación de trabajo de los diseñadores jaja –

+10

, ¡genial! : P acaba de agregar información para XXHDPI, también. – kcoppock

+0

¿Cómo decides que tienes que comenzar desde una 48pb? Digamos que solo tienes una tableta (mdpi) a mano, ¿empiezas con un tamaño aleatorio e iteras hasta que parece "lo suficientemente grande"? – phtrivier

4

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

El icono del iniciador de Android Tablet usa un cubo de densidad hacia arriba.

De acuerdo con el desarrollador de Google Google+ de Nick carnicero enviar

La pantalla magnífica en el Nexus 10 cae en el cubo de la densidad xhdpi. En tabletas, Launcher usa iconos 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.

fuente de Búsqueda here

22

Basado en kcoppock 's respuesta que he creado la siguiente secuencia de comandos shell para redimensionar automáticamente todas las imágenes al tamaño correcto y copiarlos en el respectivo Android drawable- * - carpetas!

Crear 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 "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; 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/* 

Ponga 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 Proyecto de Estudio Android:

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

Usted está! ¡Espero que esto ayude a alguien!

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

1

Aquí es mis cálculos para ampliación de la escala y la reducción de las imágenes para Android-

LDPI (120 dpi, pantalla de baja densidad) - 36 píxeles x 36 píxeles (0,19) (1)

MDPI (160 dpi, pantalla de densidad media) - 48px x 48px (0,25) (1,33)

IPAP (240 dpi, pantalla de alta densidad) - 72px x 72px (0,38) (2)

xhdpi (320 dpi, pantalla extra-alta densidad) - 96px x 96px (0,5) (2,67)

xxhdpi (480 dpi, pantalla extra-extra-alta densidad) - 144 píxeles x 144 píxeles (0.75) (4)

xxxhdpi (640 dpi, pantalla extra-extra-extra-alta densidad) - 192px x 192px (1,0) (5,33)

My short article es útil para crear recursos de imágenes usando ImageMagick, cuando hay múltiples imagenes

Cuestiones relacionadas