studio programacion name hermosa change app android drawable screen-resolution

programacion - ¿Solo usas XHDPI drawables en la aplicación de Android?



change app name android studio (7)

A partir de Android 1.6, se manejan diferentes densidades, incluido XHDPI (que no se agregó oficialmente hasta la 2.2). Su aplicación primero buscará una imagen que coincida con su densidad, pero puede buscar "depósitos" más grandes como XHDPI y luego realizar la escala por usted.

Es mejor incluir activos específicos para las densidades que desea soportar. Una imagen que es 100x100 toma 40kb; y la imagen que es 200x200 toma 160k (sin comprimir). Por lo tanto, cualquier recurso XHDPI utilizado en dispositivos MDPI tiene cuatro veces la cantidad de datos que necesita, que deben manejarse cuando la aplicación se inicia y sus recursos están preparados. Un menor uso de la memoria significa una mayor eficiencia, menos posibilidades de una excepción OutOfMemoryException.

Además, tipos específicos de imágenes se verán mal cuando se ajustan automáticamente. En particular, las imágenes con líneas finas o patrones finos tendrán su detalle confuso. Cuando reduce las imágenes a mano, puede elegir el algoritmo que mejor se adapte a sus necesidades (lineal, bicúbico, lanczos, etc.).

Si le preocupa el tiempo que le lleva cambiar el tamaño, puede incorporar un proceso por lotes o usar herramientas como Nine Patch Resizer: http://code.google.com/p/9patch-resizer/

Si planea admitir LDPI, MDPI, HPDI y quizás XHDPI en un futuro próximo, ¿está bien incluir solo los elementos dibujables XHDPI en el proyecto y dejar que los dispositivos los escalen a la resolución deseada?

He probado para cambiar el tamaño de los elementos dibujables en MDPI y HDPI en Photoshop y luego comparé el resultado con los elementos dibujables XHDPI que solo se redimensionaron en Android, y no veo ninguna diferencia. ¿Es mal diseño tomar este atajo? Sería bueno no tener que cambiar el tamaño de cada uno de los dibujables en 3 resoluciones diferentes.

La planificación para utilizar el SDK de destino es 2.1 o 2.2.

BR Emil


Está bien tener solo recursos xhdpi. Pero tenga en cuenta que xhdpi se introdujo con el nivel 9 de api (pan de jengibre). Es decir, si apunta a niveles de api <= 8 necesita al menos también recursos hdpi.


Esta afirmación sobre el uso de memoria adicional es incorrecta.

Si coloca elementos XHDPI tamaño XHDPI dentro de la carpeta MDPI , tendrá problemas de memoria.

Pero si proporciona XHDPI dentro de la carpeta XHDPI , entonces no se utilizará ninguna memoria adicional, ya que Android muestra las imágenes omitiendo partes de la misma.

Esta skipping es la razón por la que necesita proporcionar elementos dibujables para cada densidad que planea apoyar para que se vean bien.

Por otro lado, solo ciertas imágenes se verán mal cuando se muestree (principalmente iconos pequeños), por lo que siempre que la imagen tenga suficientes datos para desechar, se verá bien. O imagínese si tiene una cuadrícula como dibujable, por lo que potencialmente algunas líneas de cuadrícula se pueden tirar y la imagen se verá mal.

Al final, es mejor para usted experimentar con diferentes dispositivos, luego puede determinar qué cajoneras necesitan recursos alternativos para su densidad.


Personalmente, descubrí que usar solo la carpeta xhdpi funciona bastante bien en muchas aplicaciones y soy un gran partidario de este enfoque. En memoria, la sobrecarga es cierta, pero con los dispositivos actuales, lo consideraría insignificante. También creo que hay algo de caché involucrado después de la reducción de escala, ya que nunca noté ninguna desaceleración debido a esto. Incluir solo una carpeta puede reducir dramáticamente el tamaño de su APK, lo que los usuarios finales apreciarán bastante. Debes tener en cuenta que algunas imágenes tendrán artefactos de escalado (patrones finos y cosas) pero personalmente nunca encontré nada crítico en mis aplicaciones. También para botones y cosas, asegúrese de usar 9 parches para reducir los artefactos en las esquinas redondeadas, incluso puede reducir ligeramente el tamaño de la imagen con este método. El nivel de API no será un problema en versiones anteriores, ya que creo que drawable-xhdpi es considerado como drawable en versiones que no lo admitían. No ignore las posibilidades de definir algunos elementos dibujables simples en xml, por ejemplo, es muy fácil crear un fondo degradado con solo formas y con esto ahorra espacio y no se arriesga a artefactos de escala.


Probé en una aplicación simple (desarrollada para Android 2.1) usando solo imágenes xhdpi y funciona bien en resoluciones pequeñas, medias y altas ... incluso probé en un Android 2.1 (resolución pequeña) y abre la imagen sin problemas.

Tal vez la cosa con la memoria sea cierta, por lo que es necesario que alguien pruebe esto.


Supongo que es una buena manera de ir. El único inconveniente que se me ocurre es la sobrecarga de recursos en dispositivos de pequeña escala y posibles artefactos debido a la reducción de escala. En realidad, en el Google IO de este año, Chris Pruett recomendó incrustar solo activos de alta resolución y dejar que Opengl se encargue de la escala.


XHDPI solo se introdujo en Android SDK API Nivel 9 (Gingerbread) (consulte http://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_XHIGH ) por lo que si planea tener un nivel de SDK mínimo de menos de 9, también deberá proporcionar, al menos, dibujables HDPI, así como los dispositivos con Froyo o inferior no mostrarán nada.

Actualización: en realidad parece que las versiones anteriores a Gingerbread mostrarán imágenes xhdpi: https://groups.google.com/d/msg/android-developers/yjYO91OmoJ4/v3he0ZbKo-UJ