Descargo de responsabilidad
Esta respuesta es de 2013 y está muy desactualizada. A partir de Android 3.2, ahora hay 6 grupos de densidad de pantalla. Esta respuesta se actualizará tan pronto como pueda, pero sin ETA. Consulte la documentación oficial de todas las densidades en este momento (aunque la información sobre tamaños de píxeles específicos es siempre difícil de encontrar).
Aquí está la versión tl / dr
Cree 4 imágenes, una para cada densidad de pantalla:
- xlarge (xhdpi): 640x960
- grande (hdpi): 480x800
- medio (mdpi): 320x480
- pequeño (ldpi): 240x320
Lea la introducción de la imagen de 9 parches en la Guía para desarrolladores de Android
- Diseñe imágenes que tengan áreas que se puedan estirar de manera segura sin comprometer el resultado final
Con esto, Android seleccionará el archivo apropiado para la densidad de imagen del dispositivo, luego estirará la imagen de acuerdo con el estándar de 9 parches.
final de tl; dr. Publicación completa por delante
Estoy respondiendo con respecto al aspecto relacionado con el diseño de la pregunta. No soy desarrollador, por lo que no podré proporcionar código para implementar muchas de las soluciones proporcionadas. Por desgracia, mi intención es ayudar a los diseñadores que están tan perdidos como yo cuando ayudé a desarrollar mi primera aplicación de Android.
Se adapta a todos los tamaños.
Con Android, las empresas pueden desarrollar sus teléfonos móviles y mesas de casi cualquier tamaño, con casi cualquier resolución que deseen. Debido a eso, no hay un "tamaño de imagen correcto" para una pantalla de bienvenida, ya que no hay resoluciones de pantalla fijas. Eso plantea un problema para las personas que desean implementar una pantalla de inicio.
¿Sus usuarios realmente quieren ver una pantalla de bienvenida?
(En una nota al margen, las pantallas de presentación están algo desaconsejadas entre los chicos de usabilidad. Se argumenta que el usuario ya sabe qué aplicación tocó, y no es necesario marcar su imagen con una pantalla de presentación, ya que solo interrumpe la experiencia del usuario con un "anuncio". Debe usarse, sin embargo, en aplicaciones que requieren una carga considerable cuando se inicializa (5s +), incluidos juegos y demás, para que el usuario no se quede atascado preguntándose si la aplicación se bloqueó o no)
Densidad de pantalla; 4 clases
Entonces, dadas tantas resoluciones de pantalla diferentes en los teléfonos en el mercado, Google implementó algunas alternativas y soluciones ingeniosas que pueden ayudar. Lo primero que debe saber es que Android separa TODAS las pantallas en 4 densidades de pantalla distintas:
- Baja densidad (ldpi ~ 120dpi)
- Densidad media (mdpi ~ 160dpi)
- Alta densidad (hdpi ~ 240 ppp)
- Densidad extra alta (xhdpi ~ 320dpi) (Estos valores de ppp son aproximaciones, ya que los dispositivos personalizados tendrán valores de ppp variables)
Lo que usted (si es diseñador) necesita saber es que Android básicamente elige entre 4 imágenes para mostrar, dependiendo del dispositivo. Entonces, básicamente, tiene que diseñar 4 imágenes diferentes (aunque se pueden desarrollar más para diferentes formatos, como pantalla panorámica, modo retrato / paisaje, etc.).
Con eso en mente, tenga esto en cuenta: a menos que diseñe una pantalla para cada resolución que se use en Android, su imagen se estirará para adaptarse al tamaño de la pantalla. Y a menos que su imagen sea básicamente un degradado o desenfoque, obtendrá una distorsión no deseada con el estiramiento. Entonces, tiene básicamente dos opciones: crear una imagen para cada combinación de tamaño / densidad de pantalla, o crear cuatro imágenes de 9 parches.
La solución más difícil es diseñar una pantalla de presentación diferente para cada resolución. Puede comenzar siguiendo las resoluciones en la tabla al final de esta página (hay más. Ejemplo: 960 x 720 no está en la lista). Y suponiendo que tenga algunos pequeños detalles en la imagen, como texto pequeño, debe diseñar más de una pantalla para cada resolución. Por ejemplo, una imagen de 480x800 que se muestra en una pantalla mediana puede verse bien, pero en una pantalla más pequeña (con mayor densidad / ppp), el logotipo puede ser demasiado pequeño o puede que algún texto sea ilegible.
Imagen de 9 parches
La otra solución es crear una imagen de 9 parches . Básicamente es un borde transparente de 1 píxel alrededor de su imagen, y al dibujar píxeles negros en el área superior e izquierda de este borde puede definir qué partes de su imagen se podrán estirar. No entraré en detalles sobre cómo funcionan las imágenes de 9 parches, pero, en resumen, los píxeles que se alinean con las marcas en el área superior e izquierda son los píxeles que se repetirán para estirar la imagen.
Algunas reglas básicas
- Puede hacer estas imágenes en Photoshop (o cualquier software de edición de imágenes que pueda crear pngs transparentes con precisión).
- El borde de 1 píxel debe ser TRANSPARENTE COMPLETO.
- El borde transparente de 1 píxel debe estar alrededor de su imagen, no solo arriba y a la izquierda.
- solo puede dibujar píxeles negros (# 000000) en esta área.
- Los bordes superior e izquierdo (que definen el estiramiento de la imagen) solo pueden tener un punto (1px x 1px), dos puntos (ambos 1px x 1px) o UNA línea continua (ancho x 1px o 1px x altura).
- Si elige usar 2 puntos, la imagen se expandirá proporcionalmente (por lo que cada punto se turnará para expandirse hasta alcanzar el ancho / alto final)
- El borde de 1px debe ser adicional a las dimensiones del archivo base previsto. Por lo tanto, una imagen de 9 parches de 100x100 debe tener 102x102 (100x100 + 1px en la parte superior, inferior, izquierda y derecha)
- Las imágenes de 9 parches tienen que terminar con * .9.png
Por lo tanto, puede colocar 1 punto a cada lado de su logotipo (en el borde superior) y 1 punto encima y debajo de él (en el borde izquierdo), y estas filas y columnas marcadas serán los únicos píxeles que se estirarán.
Ejemplo
Aquí hay una imagen de 9 parches, 102x102px (tamaño final de 100x100, para fines de aplicación):
Aquí hay un zoom del 200% de la misma imagen:
Observe las marcas de 1 px en la parte superior e izquierda que indican qué filas / columnas se expandirán.
Así es como se vería esta imagen en 100x100 dentro de la aplicación:
Y esto es lo que le gustaría si se expandiera a 460x140:
Una última cosa a considerar. Estas imágenes pueden verse bien en la pantalla de su monitor y en la mayoría de los móviles, pero si el dispositivo tiene una densidad de imagen (ppp) muy alta, la imagen se verá demasiado pequeña. Probablemente todavía sea legible, pero en una tableta con una resolución de 1920x1200, la imagen aparecería como un cuadrado muy pequeño en el medio. Entonces, ¿cuál es la solución? Diseñe 4 imágenes de iniciador de 9 parches diferentes, cada una para un conjunto de densidad diferente. Para garantizar que no se produzca reducción, debe diseñar en la resolución común más baja para cada categoría de densidad. En este caso, la reducción no es deseable porque 9 parches solo explican el estiramiento, por lo que en un proceso de reducción, el texto pequeño y otros elementos pueden perder legibilidad.
Aquí hay una lista de las resoluciones más pequeñas y comunes para cada categoría de densidad:
- xlarge (xhdpi): 640x960
- grande (hdpi): 480x800
- medio (mdpi): 320x480
- pequeño (ldpi): 240x320
Por lo tanto, diseñe cuatro pantallas de bienvenida en las resoluciones anteriores, expanda las imágenes, coloque un borde transparente de 1 px alrededor del lienzo y marque qué filas / columnas serán estirables. Tenga en cuenta que estas imágenes se usarán para CUALQUIER dispositivo en la categoría de densidad, por lo que su imagen ldpi (240 x 320) podría extenderse a 1024x600 en una tableta extra grande con una densidad de imagen pequeña (~ 120 ppp). Por lo tanto, 9-patch es la mejor solución para el estiramiento, siempre que no desee una foto o gráficos complicados para una pantalla de inicio (tenga en cuenta estas limitaciones al crear el diseño).
Nuevamente, la única forma de que este estiramiento no suceda es diseñar una pantalla para cada resolución (o una para cada combinación de resolución-densidad, si desea evitar que las imágenes se vuelvan demasiado pequeñas / grandes en dispositivos de alta / baja densidad), o decir la imagen no se estira y aparece un color de fondo donde sea que se produzca el estiramiento (recuerde también que un color específico generado por el motor de Android probablemente se verá diferente del mismo color específico representado por Photoshop, debido a los perfiles de color).
Espero que esto tenga sentido. ¡Buena suerte!