una tamaño studio reticula poner para online iconos icono gratis descargar crear como celulares botones app aplicacion android android-drawable mipmaps

android - studio - tamaño de iconos para celulares



Mipmap dibujables para iconos (11)

Desde Android 4.3 (Jelly Bean) ahora podemos usar res/mipmap carpetas res/mipmap para almacenar imágenes "mipmap".

Por ejemplo, Chrome para Android almacena sus iconos en estas carpetas en lugar de las carpetas de res/drawable más normales.

¿En qué se diferencian estas imágenes de mipmap de las otras imágenes familiares dibujables?

Veo que en mi manifiesto, usamos @mipmap/ qualifier, en lugar de @drawable/ , lo que tiene sentido dado el nombre de la carpeta de recursos:

<activity android:name=".MipmapDemp" android:icon="@mipmap/ic_launcher" />

Referencias:

El documento de las API de Android 4.3 tiene lo siguiente para decir:

El uso de un mipmap como fuente para su mapa de bits o dibujable es una forma sencilla de proporcionar una imagen de calidad y varias escalas de imagen, lo que puede ser particularmente útil si espera que su imagen se amplíe durante una animación.

Android 4.2 (nivel API 17) agregó compatibilidad con mipmaps en la clase Bitmap: Android intercambia las imágenes mip en su Bitmap cuando ha proporcionado una fuente de mipmap y ha habilitado setHasMipMap (). Ahora en Android 4.3, puede habilitar mipmaps para un objeto BitmapDrawable también, al proporcionar un activo mipmap y configurar el atributo android: mipMap en un archivo de recursos de mapa de bits o llamando a hasMipMap ().

No veo nada allí que me ayude a entender.

Los recursos de mapa de bits XML tienen una propiedad de android:mipMap :

Booleano Activa o desactiva la sugerencia de mipmap. Vea setHasMipMap () para más información. El valor predeterminado es falso.

Esto no se aplica a los iconos del iniciador por lo que puedo ver.

La pregunta se planteó en Grupos de Google (¿ El propósito del nombre de recurso "mipmap"?! ), A lo que Romain Guy respondió:

Es útil proporcionar una imagen a una resolución más grande que normalmente se computaría (por ejemplo, en un dispositivo mdpi, el Lanzador podría querer que el icono hdpi más grande muestre accesos directos de aplicaciones grandes).

Siento que esto casi tiene sentido, pero no del todo.

Todavía estoy inclinado a seguir con el seguimiento de Randy Sugianto:

¿Cuáles son las ventajas de esto? ¿Hay alguna guía sobre cómo usar mipmaps, probablemente para mejores iconos de inicio?

Por supuesto, Wikipedia tiene una página para "Mipmap" , que se refiere a una técnica más antigua inventada en 1983, que no puedo relacionar con la implementación actual de Android.

¿Deberíamos almacenar todos los íconos de nuestras aplicaciones en res/mipmap carpetas res/mipmap estos días, y cuáles son las pautas para estas imágenes de mipmap?

Actualización # 1

Aquí hay una entrada de blog que trata de explicarlo un poco.

Pero la imagen utilizada en esa publicación del blog muestra lo que parece ser un archivo con muchos logotipos. Esto no es lo que veo en la carpeta mipmap de Chrome.

La carpeta mipmap-hdpi contiene tres imágenes. Uno es el logotipo de Chrome, por sí solo.

Curiosamente, es 72x72, no 48x48, lo que esperaría ver.

Quizás eso es todo lo que hay en esto: ¿solo necesitamos mantener íconos más grandes en las carpetas de mipmap?

Actualización # 2

La publicación del blog de desarrolladores de Android del 23/10/2014 confirma de nuevo la idea de usar mipmap carpetas mipmap para los íconos de aplicaciones:

Cuando se habla de la densidad de pantalla del Nexus 6, el autor escribe:

Es una práctica recomendada colocar los íconos de la aplicación en carpetas mipmap (no en las carpetas dibujables) porque se usan en resoluciones diferentes de la densidad actual del dispositivo. Por ejemplo, un icono de la aplicación xxxhdpi se puede usar en el iniciador para un dispositivo xxhdpi.

Actualización # 3

Tenga en cuenta que Android Studio crea los íconos ic_launcher.png en mipmap... carpetas mipmap... lugar de las carpetas drawable... que Eclipse usó para crearlos.


¿En qué se diferencian estas imágenes de mipmap de las otras imágenes familiares dibujables?

Aquí están mis dos centavos para tratar de explicar la diferencia. Hay dos casos con los que te enfrentas cuando trabajas con imágenes en Android:

  1. Desea cargar una imagen para la densidad de su dispositivo y la va a utilizar "como está", sin cambiar su tamaño real . En este caso, debe trabajar con los elementos extraíbles y Android le dará la mejor imagen de ajuste.

  2. Desea cargar una imagen para la densidad de su dispositivo, pero esta imagen se ampliará o reducirá . Por ejemplo, esto es necesario cuando quiere mostrar un icono de lanzador más grande, o si tiene una animación, que aumenta el tamaño de la imagen. En tales casos, para garantizar la mejor calidad de imagen, debe colocar su imagen en la carpeta mipmap . Lo que hará Android es tratar de recoger la imagen de un cubo de mayor densidad en lugar de ampliarla. Esto aumentará la nitidez (calidad) de la imagen.

Por lo tanto, la regla de oro para decidir dónde colocar tu imagen sería:

  • Los iconos del iniciador siempre van a la carpeta mipmap .
  • Las imágenes, que a menudo son ampliadas (o extremadamente reducidas) y cuya calidad es crítica para la aplicación, también van a la carpeta mipmap .
  • Todas las demás imágenes son dibujables habituales.

Una cosa que mencioné en otro hilo que vale la pena señalar: si está creando versiones diferentes de su aplicación para diferentes densidades, debe conocer el directorio de recursos "mipmap". Esto es exactamente igual que los recursos "dibujables", excepto que no participa en la eliminación de densidad al crear los diferentes objetivos de apk.

plus.google.com/105051985738280261832/posts/QTA9McYan1L


Hay dos casos con los que te enfrentas cuando trabajas con imágenes en Android:

  1. Desea cargar una imagen para la densidad de su dispositivo y la va a utilizar "tal como está", sin cambiar su tamaño real. En este caso, debe trabajar con los elementos extraíbles y Android le dará la mejor imagen de ajuste.
  2. Desea cargar una imagen para la densidad de su dispositivo, pero esta imagen se ampliará o reducirá. Por ejemplo, esto es necesario cuando quiere mostrar un icono de lanzador más grande, o si tiene una animación, que aumenta el tamaño de la imagen. En tales casos, para garantizar la mejor calidad de imagen, debe colocar su imagen en la carpeta mipmap. Lo que hará Android es tratar de recoger la imagen de un cubo de mayor densidad en lugar de ampliarla.

ASI QUE

Por lo tanto, la regla de oro para decidir dónde colocar tu imagen sería:

  1. Los iconos del iniciador siempre van a la carpeta mipmap.

  2. Las imágenes, que a menudo son ampliadas (o extremadamente reducidas) y cuya calidad es crítica para la aplicación, también van a la carpeta mipmap.

  3. Todas las demás imágenes son dibujables habituales.

Cita de this artículo.


Cuando se construyen apks separados para diferentes densidades, las carpetas dibujables para otras densidades se eliminan. Esto hará que los iconos aparezcan borrosos en los dispositivos que usan iconos de inicio de mayor densidad. Como las carpetas de mipmap no se eliminan, siempre es mejor usarlas para incluir los iconos del iniciador.


El entendimiento que tengo sobre mipmap es más o menos así:

Cuando es necesario dibujar una imagen, dado que tenemos diferentes tamaños de pantalla y resoluciones, tendrá que participar una escala.

Si tiene una imagen que está bien para un teléfono celular de gama baja, cuando la escala al tamaño de una tableta de 10 "tiene que" inventar "píxeles que realmente no existen. Esto se hace con un algoritmo de interpolación. cuanto mayor sea la cantidad de píxeles que se deben inventar, más tardará el proceso y la calidad comenzará a fallar. La mejor calidad se obtiene con algoritmos más complejos que llevan más tiempo (el promedio de píxeles circundantes en comparación con el píxel más cercano, por ejemplo).

Para reducir la cantidad de píxeles que se deben inventar, con mipmap usted proporciona diferentes tamaños / resoluciones de la misma imagen, y el sistema elegirá la imagen más cercana a la resolución que se debe representar y realizará la escala a partir de ahí. Esto debería reducir la cantidad de píxeles inventados que ahorran recursos para ser utilizados en el cálculo de estos píxeles para proporcionar una imagen de buena calidad.

Leí sobre esto en un artículo que explica un problema de rendimiento en libgdx al escalar imágenes:

http://www.badlogicgames.com/wordpress/?p=1403


Hay dos usos distintos de mipmaps:

  1. Para los iconos del lanzador cuando se construyen APK específicos de densidad. Algunos desarrolladores crean APKs separados para cada densidad, para mantener el tamaño de APK bajo. Sin embargo, algunos lanzadores (incluidos con algunos dispositivos o disponibles en Play Store) usan íconos más grandes que los 48dp estándar. Los lanzadores utilizan getDrawableForDensity y reducen la escala si es necesario, en lugar de subir, por lo que los iconos son de alta calidad. Por ejemplo, en una tableta hdpi, el iniciador puede cargar el icono xhdpi. Al colocar el icono del iniciador en el directorio mipmap-xhdpi, no se eliminará la forma en que se encuentra un directorio drawable-xhdpi al crear una APK para dispositivos hdpi. Si está creando una única APK para todos los dispositivos, esto realmente no importa, ya que el lanzador puede acceder a los recursos dibujables para la densidad deseada.

  2. La API de mipmap actual de 4.3. No he usado esto y no estoy familiarizado con él. No es utilizado por los lanzadores de proyectos de código abierto de Android y no tengo conocimiento de ningún otro lanzador que esté usando.


La implementación de Android de mipmaps en 4.3 es exactamente la técnica de 1983 explicada en el artículo de Wikipedia :)

Cada imagen de mapa de bits del conjunto mipmap es un duplicado reducido de la textura principal, pero con un cierto nivel de detalle reducido. Aunque la textura principal aún se usaría cuando la vista sea suficiente para representarla con todo detalle, el renderizador cambiará a una imagen de mipmap adecuada (...) cuando la textura se vea desde una distancia o en un tamaño pequeño.

Aunque esto se describe como una técnica para gráficos en 3D (ya que menciona "ver desde la distancia"), se aplica también a 2D (traducido como "dibujado es un espacio más pequeño", es decir, "reducido").

Para un ejemplo concreto de Android, imagine que tiene una vista con un cierto fondo dibujable (en particular, un BitmapDrawable ). Ahora usa una animación para escalarla a 0.15 de su tamaño original. Normalmente, esto requeriría reducir el mapa de bits de fondo para cada fotograma. Sin embargo, esta reducción de escala "extrema" puede producir artefactos visuales.

Sin embargo, puede proporcionar un mipmap, lo que significa que la imagen ya está predefinida para unas pocas escalas específicas (digamos 1.0, 0.5 y 0.25). Siempre que la animación "cruce" el umbral de 0.5, en lugar de continuar reduciendo la escala de la imagen original de tamaño 1.0, cambiará a la imagen de 0.5 y la reducirá, lo que debería proporcionar un mejor resultado. Y así sucesivamente como la animación continúa.

Esto es un poco teórico, ya que en realidad lo hace el renderizador. De acuerdo con la fuente de la clase Bitmap, es solo una pista, y el renderizador puede o no cumplirla.

/** * Set a hint for the renderer responsible for drawing this bitmap * indicating that it should attempt to use mipmaps when this bitmap * is drawn scaled down. * * If you know that you are going to draw this bitmap at less than * 50% of its original size, you may be able to obtain a higher * quality by turning this property on. * * Note that if the renderer respects this hint it might have to * allocate extra memory to hold the mipmap levels for this bitmap. * * This property is only a suggestion that can be ignored by the * renderer. It is not guaranteed to have any effect. * * @param hasMipMap indicates whether the renderer should attempt * to use mipmaps * * @see #hasMipMap() */ public final void setHasMipMap(boolean hasMipMap) { nativeSetHasMipMap(mNativeBitmap, hasMipMap); }

Sin embargo, no estoy seguro de por qué esto sería especialmente adecuado para los íconos de aplicaciones. Aunque Android en tabletas, así como algunos lanzadores (p. Ej., GEL), solicitan un ícono "una densidad más alta" para mostrarlo más grande, se supone que esto debe hacerse usando el mecanismo regular (es decir drawable-xxxhdpi , & c).


Parece que Google ha actualizado sus documentos desde todas estas respuestas, así que espero que esto ayude a otra persona en el futuro :) Me encontré con esta pregunta, mientras creaba un nuevo proyecto (nuevo nuevo).

TL; DR: los elementos extraíbles pueden eliminarse como parte de la optimización de recursos específica de dp. Los Mipmaps no serán despojados.

Las diferentes aplicaciones de inicio de la pantalla de inicio en diferentes dispositivos muestran íconos de inicio de aplicación en varias resoluciones. Cuando las técnicas de optimización de recursos de la aplicación eliminan los recursos para densidades de pantalla no utilizadas, los iconos del iniciador pueden verse borrosos porque la aplicación del iniciador debe actualizar un icono de resolución más baja para su visualización. Para evitar estos problemas de visualización, las aplicaciones deben usar mipmap/ carpetas mipmap/ resource para los iconos de inicio. El sistema Android conserva estos recursos independientemente de la eliminación de densidad, y garantiza que las aplicaciones de inicio puedan seleccionar iconos con la mejor resolución para mostrar.

(de http://developer.android.com/tools/projects/index.html#mipmap )


Si crea una APK para una resolución de pantalla de destino como HDPI, la herramienta de empaquetado de activos de Android, AAPT, puede eliminar los elementos dibujables para otra resolución que no necesita. Pero si está en la carpeta mipmap, estos activos permanecerán en la carpeta. APK, independientemente de la resolución de destino.


Ya que estaba buscando una respuesta clara para determinar el tipo correcto de íconos de notificación, me gustaría agregar esta declaración clara al tema. Es de http://developer.android.com/tools/help/image-asset-studio.html#saving

Nota: los archivos de iconos del iniciador residen en una ubicación diferente a la de otros iconos. Están ubicados en la carpeta mipmap. Todos los demás archivos de iconos residen en la carpeta / dibujable de su proyecto.