2011-02-15 14 views
10

He pasado por this post (y otros), así como a través de la documentation sobre el apoyo a diferentes resoluciones de pantalla en Android, pero no pude encontrar una respuesta clara a una (simple) pregunta:Android: resoluciones dibujable

¿Está bien simplemente usar "res/drawable" para imágenes en una aplicación de Android?

Fondo: Las únicas imágenes que se necesitan en esta aplicación específica son el icono de la aplicación en sí y un icono para una notificación, no habrá imágenes en ningún diseño.
Por lo tanto, en mi entender, si no se encuentran "hdpi" -, "mdpi" - y "ldpi" -carpetas, Android usará "res/drawable" como reserva.
Como el único inconveniente con una resolución de pantalla diferente parece ser que Android escalará las imágenes para una resolución específica si no se encuentra una especial, esto solo debería ser un problema cuando se hace UPscaling, porque la imagen se volverá borrosa. Pero si proporciono todas las imágenes "hdpi" en "res/drawable" (en lugar de 3 diferentes), ¿no Android simplemente DOWNscale esas imágenes si el tamaño es demasiado grande?
Si eso es cierto, podría ahorrar espacio de APK en solo un tercio de las imágenes.

Pregunta de seguimiento: He leído que para API-nivel 3 se requiere un directorio con el nombre "drawable-v3". ¿Es cierto o es "dibujable" el repliegue para este nivel de API también?

Cualquier sugerencia es apreciada.

Respuesta

7

Las imágenes de la carpeta dibujables se supone que a una resolución de MDPI, por lo que recibirán escalado hacia arriba/abajo si no provees a los demás.

Las imágenes ampliadas serán de baja resolución y se ven borrosas. Las imágenes a escala reducida carecerán de píxeles y se verán irregulares.

De modo que su aplicación "funcionará" con solo un conjunto de imágenes predeterminadas, pero se verá horrible en muchos dispositivos. Le recomiendo que cree las imágenes en diferentes tamaños, por lo que se ve muy bien en todos los dispositivos, es un poco aburrido, pero no es difícil de hacer.

No pasará mucho tiempo antes de que tengamos dispositivos xhdpi, por lo tanto, es posible que desee crearlos también.

Asumo que ha leído this

+0

Sí, leí eso, acabo de poner la URL incorrecta en mi publicación, he editado el enlace, gracias. Como mi aplicación solo usa el ícono de la aplicación y un ícono de notificación, creo que lo probaré ... un ícono de aplicación irregular no puede ser tan malo :) – Select0r

+0

Pero agregando una imagen varias veces (para ldpi, mdpi, hdpi, xhdpi, xxhdpi) aumenta mucho el tamaño, en mi proyecto tengo 15 actividades y para cada actividad tengo diferentes imágenes y en total son 96. Así que 96 imágenes por cada carpeta dibujable (5) = 480 imágenes. Para las imágenes en ldpi mdpi eso no es un gran problema porque son pequeñas. Pero las otras imágenes en las carpetas dibujable el tamaño de mis imágenes son las siguientes: IPAP - 14MB xhdpi - 19MB xxhdpi - 39MB Y todo eso va al tamaño del apk. –

2

No es una respuesta completa, pero las imágenes muy reducidas pueden y se ven tan mal como las imágenes mejoradas (pero de una manera diferente), porque las bibliotecas gráficas utilizan casi exclusivamente métodos de interpolación para el tamaño y los métodos de interpolación son limitados. términos de cuánto pueden reducir una imagen antes de una pérdida de información grave (hasta aproximadamente el 50% para métodos lineales y hasta aproximadamente el 25% para métodos bicúbicos). Esta es la razón por la cual la mayoría de las plataformas han desarrollado convenciones (como hdpi, mdpi, etc.) que le permiten incrustar las imágenes que son mejores para cada tamaño de pantalla.

+0

Esto solo afectará al icono de la aplicación en sí, donde hdpi 72x72 y ldpi es 36x36, eso no debería ser tan malo al hacer una reducción, ¿verdad? – Select0r

+0

No, es probable que se vea mal. Realmente debería hacer downscaling con un sofisticado motor gráfico como Photoshop o lo que sea, sus algoritmos producirán resultados mucho mejores que el motor gráfico de un entorno de programación (que está optimizado para el rendimiento en lugar de la calidad de los resultados finales). – MusiGenesis

+0

Tengo todas mis imágenes i n tres tamaños, hecho con un programa de gráficos, estoy ansioso por salvar esos pares de kB en el tamaño de APK final :) – Select0r

0

res/estirable es el repliegue

la salvedad es que la ampliación no sólo degrada la imagen, pero requiere tiempo de procesamiento también.

Ni siquiera he leído el API de nivel 3 Docs todavía, lo siento por medio una respuesta

+0

¿Pero las imágenes escaladas no se almacenarán en la memoria caché para que el tiempo del procesador se "pierda" solo en el inicio? (Estamos hablando de un puñado de imágenes aquí, la más grande es el ícono de la aplicación con 72x72). Acerca de v3: p. este post habla sobre la "-v3" -folder: http://stackoverflow.com/questions/2496506/what-kind-of-icon-should-i-deploy-with-my-android-1-x-and- 2-x-application – Select0r

2

utilizo estirable/todo el tiempo, y luego ir a BestBuy y todas las tiendas locales inalámbricas y probar mis aplicaciones en dispositivos pequeños/grandes/grandes (comprimido) y se ven bien.

+1

Es bueno saber que la idea de simplemente usar dibujable/no es demasiado exagerada. No sé de ninguna tienda cercana que ofrezca ningún dispositivo móvil realmente conectado a una red (tienes suerte si los dispositivos están realmente cargados y pueden encenderse sin un código PIN), ¡pero definitivamente es una gran idea! – Select0r

2

A menos que tenga algún motivo para dirigirse a dispositivos pre-Donut (ahora solo el 4% de los dispositivos según http://developer.android.com/resources/dashboard/platform-versions.html), debe colocar sus mapas de bits en uno de los directorios -Xdpi.El directorio genérico "dibujable" es un sinónimo de "drawable-mdpi" por razones de compatibilidad, pero una aplicación moderna y bien escrita debería colocar sus derivables en un directorio que coincida con la densidad para la que están diseñados.

-2

Por lo que vale, encontré que el manejo de la imagen de Android es tedioso y poco confiable. El concepto de incluir imágenes de diferentes tamaños para diferentes pantallas resultará en grandes archivos de aplicación repletos de imágenes. Ya hay pantallas que no se ajustan a los rangos de resolución estándar. He descubierto que es mejor no permitir que Android maneje la escala, parece crear una imagen base para la pantalla más pequeña que elijas y luego ampliarla para obtener imágenes de aspecto ordinario en pantallas grandes. Esto sucede incluso si creó la imagen específicamente para la pantalla grande. Mi solución que parece funcionar en todo, desde un teléfono Samsung de 2 "hasta una tableta Sony es crear imágenes a alta resolución y usar Bitmap.createScaledBitmap() para obtener el tamaño que necesito.

advertencia: Soy nuevo en Android y tiene mucho que aprender.

Cuestiones relacionadas