2010-04-01 6 views
30

Estoy creando una pantalla de bienvenida que se mostrará mientras se carga mi aplicación Android. Me gustaría crearlo con el tamaño correcto para que Android no lo escale automáticamente hacia arriba o hacia abajo para ajustarse a la pantalla. (Es una imagen de mapa de bits, una fotografía de una pintura al óleo, por lo que no puedo convertirla en un parche de nueve).¿Qué resolución deberían tener mis pantallas de bienvenida de Android?

Pero hay al menos tres tamaños de pantalla importantes que me interesan: 320x480, 480x854 (Droid) y 480x800 (Nexus One).

He leído la documentación en supporting multiple screen sizes, pero todavía no veo cómo se supone que debo configurar diferentes pantallas de presentación para Droid/Nexus one (ambos son recursos "hdpi" en lo que respecta a Android)), y no sé exactamente cuán grande debería ser mi pantalla de bienvenida en cualquier caso. (¿Qué altura tiene la barra/menú de título del sistema operativo en Droid? N1?)

¿Qué tamaño debo tener para estas imágenes y cómo le digo a Android que use el tamaño correcto en una pantalla determinada?

+0

¿Por qué no crear una imagen de 300x300 (más o menos) y centrarla? – zildjohn01

+0

Has leído mi mente. Me encantaría ver respondida esta pregunta. – Felix

+0

Es una imagen de mapa de bits. Centrarlo lo hace parecer extraño. –

Respuesta

32

No necesita preocuparse por el tamaño absoluto de la pantalla o las barras de estado o cualquier cosa — es por eso que tenemos imágenes de nueve parches.

Lo que hice fue tener una imagen que se veía bien para cada resolución — esencialmente un logotipo sobre un fondo transparente, con algo de texto en la parte inferior.

Luego corté un montón de espacio en los bordes superior e inferior, hice un borde de nueve parches alrededor de la imagen, con un solo píxel cerca de los bordes izquierdo, derecho y superior. Esto permite que la imagen se expanda uniformemente en los lados y en la parte superior para llenar la pantalla.


Editar, en respuesta a los comentarios a continuación de Dan:

Sí, hay una manera de determinar qué gráficos se deben utilizar para que los tamaños de pantalla explícitas, pero es deprecated.

Al igual que hay drawable-hdpi y -ldpi calificadores de recursos, también es posible utilizar drawable-HHHxWWW — la dimensión más grande de píxeles que viene primero.

p. Ej. drawable-800x480 y drawable-854x480

+0

En mi caso, mi imagen no es un logotipo; es un retrato de mapa de bits (es una fotografía de una pintura al óleo). Convertir esta pintura en una imagen de nueve parches no es una opción. –

+0

Si se trata de una imagen como esa, supongo que no querría estirarla. Así que lo escalaría a la resolución más común para cada densidad, y le permitiría tener un borde transparente (u otro) donde haya más espacio en la pantalla disponible. –

+0

Agregar un borde se ve raro. En cambio, me gustaría definir dos recursos: uno para 480x800 y otro para 480x854. ¿Es eso posible? –

6

Bien, primero: puede encontrar el modelo del dispositivo a través de android.os.Build y usarlo para determinar qué imagen mostrar.

En segundo lugar, personalmente no me molestaría. Los diseños se deben hacer en inmersión ya que cada pantalla de Android tiene una inclinación de 320x480, y Android mantiene la relación de aspecto entre los dispositivos muy bien a través de esto en mi experiencia. Un conjunto de salpicaduras de 480x800 para llenar el padre ha sido bastante confiable tanto en N1 como en el droide hasta donde he llegado.

+0

No necesita mirar 'Build' para averiguar la resolución o densidad de la pantalla. Las relaciones de aspecto también pueden variar de manera bastante salvaje entre dispositivos; esta es la razón por la cual existen los atributos de recursos 'long' y' notlong'. De todos modos, nada de esto importa ya que tenemos las carpetas 'drawable-xdpi' y las imágenes de nueve parches :) –

+0

Volví a través del documento de soporte de múltiples pantallas y tiene un muy buen punto. 'long' y' notlong' fueron problemas que extrañé por completo. ¿Podría publicar algunas pantallas de su solución de nueve parches en casos extremos para que pueda tener una idea de cómo le irá a este método en caso de salpicaduras que sean imágenes, ect? – jqpubliq

+1

Dices "bastante confiable", pero cuando trabajas con imágenes de mapa de bits como la mía (una fotografía de una pintura al óleo) hay una distorsión notable en 480x800 contra 480x854. Me gustaría definir dos recursos, uno para 480x800 y otro para 480x854. ¿Es eso posible? –

1

Otra solución que implementé es poner un ImageView que llena la pantalla (ancho y alto tanto "MATCH_PARENT") con el tipo de escala "centerCrop". De esta forma, la imagen no se estira, sino que se recorta a lo largo de los bordes. Trate de no poner contenido importante (logotipos y cosas por el estilo) cerca de los bordes. Si es una fotografía, espero que los bordes sean "prescindibles" y puedan cortarse.

Cuestiones relacionadas