Mipmap dibujables para iconos

453
Richard Le Mesurier 2014-05-30 04:29.

Desde Android 4.3 (Jelly Bean) ahora podemos hacer uso de las res/mipmapcarpetas para almacenar imágenes "mipmap".

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

¿En qué se diferencian estas imágenes de mapa mip de las otras imágenes familiares que se pueden dibujar?

Veo que en mi manifiesto, usamos el @mipmap/calificador, 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 que decir:

Usar un mapa mip como fuente para su mapa de bits o dibujable es una forma simple de proporcionar una imagen de calidad y varias escalas de imagen, lo que puede ser particularmente útil si espera que su imagen se escale durante una animación.

Android 4.2 (API nivel 17) agregó soporte para mipmaps en la clase Bitmap: Android intercambia las imágenes mip en su mapa de bits cuando ha proporcionado una fuente de mipmap y ha habilitado setHasMipMap (). Ahora, en Android 4.3, también puede habilitar mipmaps para un objeto BitmapDrawable, proporcionando un activo de mipmap y configurando 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 comprender.


Los recursos de mapa de bits XML tienen una android:mipMappropiedad:

Booleano. Habilita o deshabilita la sugerencia de mapa mip. Consulte setHasMipMap () para obtener más información. El valor predeterminado es falso.

Esto no se aplica a los íconos del lanzador hasta donde puedo ver.


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

Es útil proporcionar una imagen con una resolución mayor que normalmente se calcularía (por ejemplo, en un dispositivo mdpi, es posible que el Launcher desee que el ícono hdpi más grande muestre atajos de aplicaciones grandes).

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

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

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


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 del todo con la implementación actual de Android.


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


Actualización n. ° 1

Aquí hay una publicación de blog que intenta explicarlo un poco.

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

La mipmap-hdpicarpeta de Chrome 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 iconos más grandes en las carpetas de mapas mip?


Actualización n. ° 2

La publicación del Blog de desarrolladores de Android del 23/10/2014 vuelve a confirmar la idea de utilizar las mipmapcarpetas para los iconos de las aplicaciones:

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

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


Actualización n. ° 3

Tenga en cuenta que Android Studio crea los ic_launcher.pngiconos en las mipmap...carpetas en lugar de las drawable...carpetas en las que Eclipse utilizó para crearlos.


10 answers

262
Kevin TeslaCoil 2014-06-06 07:25.

Hay dos usos distintos de mipmaps:

  1. Para iconos de iniciador al crear APK específicos de densidad. Algunos desarrolladores crean APK separados para cada densidad, para mantener el tamaño del APK bajo. Sin embargo, algunos lanzadores (enviados con algunos dispositivos o disponibles en Play Store) usan tamaños de íconos más grandes que el estándar de 48 dp. Los lanzadores usan getDrawableForDensity y reducen la escala si es necesario, en lugar de aumentar, por lo que los íconos 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á de la forma en que lo es un directorio drawable-xhdpi cuando se crea un APK para dispositivos hdpi. Si está creando un único 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 real de 4.3. No lo he usado y no estoy familiarizado con él. Los lanzadores de proyectos de código abierto de Android no lo usan y no tengo conocimiento de ningún otro lanzador que lo use.

79
Kazuaki 2015-05-21 20:20.

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

TL; DR: los elementos de diseño se pueden eliminar como parte de la optimización de recursos específicos de dp. Mipmaps no se eliminará.

Diferentes aplicaciones de inicio de pantalla de inicio en diferentes dispositivos muestran iconos de inicio de aplicaciones en varias resoluciones. Cuando las técnicas de optimización de recursos de la aplicación eliminan recursos para las densidades de pantalla no utilizadas, los íconos del iniciador pueden terminar pareciendo borrosos porque la aplicación del iniciador tiene que escalar un ícono de menor resolución para su visualización. Para evitar estos problemas de visualización, las aplicaciones deben usar las mipmap/carpetas de recursos para los iconos de inicio. El sistema Android conserva estos recursos independientemente de la reducción de densidad y garantiza que las aplicaciones de inicio puedan elegir los iconos con la mejor resolución para mostrarlos.

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

28
sergej shafarenka 2015-09-01 23:42.

¿En qué se diferencian estas imágenes de mapa mip de las otras imágenes familiares que se pueden dibujar?

Aquí está mi granito de arena para tratar de explicar la diferencia. Hay dos casos con los que se enfrenta cuando trabaja con imágenes en Android:

  1. Desea cargar una imagen para la densidad de su dispositivo y la va a usar "tal cual", sin cambiar su tamaño real . En este caso, debería trabajar con elementos de diseño y Android le dará la imagen que mejor se 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 desea mostrar un icono de lanzador más grande, o tiene una animación, lo 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 que intentará recoger la imagen de un depósito de mayor densidad en lugar de escalarla. Esto aumentará la nitidez (calidad) de la imagen.

Por lo tanto, la regla general para decidir dónde colocar su imagen sería:

  • Los iconos del iniciador siempre van a la carpeta mipmap .
  • Las imágenes, que a menudo se amplían (o se reducen extremadamente) y cuya calidad es fundamental para la aplicación, también van a la carpeta mipmap .
  • Todas las demás imágenes son dibujables habituales .
23
matiash 2014-06-08 15:59.

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 de mapas mip es un duplicado reducido de la textura principal, pero con un cierto nivel de detalle reducido. Aunque la textura principal se seguiría utilizando cuando la vista sea suficiente para renderizarla con todo detalle, el renderizador cambiará a una imagen de mapa mip adecuada (...) cuando la textura se vea desde la distancia o en un tamaño pequeño.

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

Para un ejemplo concreto de Android, imagina que tienes una Vista con un determinado diseño de fondo (en particular, a BitmapDrawable). Ahora usa una animación para escalarla a 0.15 de su tamaño original. Normalmente, esto requeriría reducir la escala del mapa de bits de fondo para cada fotograma. Sin embargo, esta reducción "extrema" puede producir artefactos visuales.

Sin embargo, puede proporcionar un mapa MIP, lo que significa que la imagen ya está renderizada previamente para algunas 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 a medida que continúa la animación.

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 sugerencia, y el renderizador puede o no respetarla.

/**
 * 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 muy seguro de por qué esto sería especialmente adecuado para los iconos de aplicaciones. Aunque Android en tabletas, así como algunos lanzadores (por ejemplo, GEL), solicitan un ícono "una densidad más alto" para mostrarlo más grande, se supone que esto se debe hacer usando el mecanismo regular (es decir drawable-xxxhdpi, & c).

11
kreker 2015-01-17 15:34.

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

https://plus.google.com/105051985738280261832/posts/QTA9McYan1L

4
Stev 2016-03-22 14:38.

Dado que estaba buscando una respuesta aclaratoria a esto para determinar el tipo correcto de iconos 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 lanzador se encuentran 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.

3
Hayk Nahapetyan 2017-07-07 21:40.

Hay dos casos con los que se enfrenta cuando trabaja con imágenes en Android:

  1. Desea cargar una imagen para la densidad de su dispositivo y la va a usar "tal cual", sin cambiar su tamaño real. En este caso, debería trabajar con elementos de diseño y Android le dará la imagen que mejor se 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 desea mostrar un icono de lanzador más grande, o tiene una animación, lo 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 que intentará recoger la imagen de un depósito de mayor densidad en lugar de escalarla.

ENTONCES

Por lo tanto, la regla general para decidir dónde colocar su imagen sería:

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

  2. Las imágenes, que a menudo se amplían (o se reducen extremadamente) y cuya calidad es fundamental para la aplicación, también van a la carpeta mipmap.

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

Cita de este artículo.

2
Fartab 2017-01-10 20:56.

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

1
Piyush 2015-07-03 23:28.
res/
mipmap-mdpi/ic_launcher.png (48x48 pixels)
mipmap-hdpi/ic_launcher.png (72x72)
mipmap-xhdpi/ic_launcher.png (96x96)
mipmap-xxhdpi/ic_launcher.png (144x144)
mipmap-xxxhdpi/ic_launcher.png (192x192)

MipMap para el icono de la aplicación para el lanzador

http://android-developers.blogspot.co.uk/2014/10/getting-your-apps-ready-for-nexus-6-and.html

https://androidbycode.wordpress.com/2015/02/14/goodbye-launcher-drawables-hello-mipmaps/

1
Evan 2016-10-01 19:27.

Si crea un APK para una resolución de pantalla de destino como HDPI, la herramienta de empaquetado de activos de Android, AAPT, puede eliminar los elementos de diseño para otras resoluciones que no necesite, pero si está en la carpeta mipmap, estos activos permanecerán en el APK, independientemente de la resolución de destino.

Related questions

MORE COOL STUFF

La estrella de HGTV, Christina Hall, revela que tiene 'envenenamiento por mercurio y plomo' probablemente por voltear 'casas asquerosas'

La estrella de HGTV, Christina Hall, revela que tiene 'envenenamiento por mercurio y plomo' probablemente por voltear 'casas asquerosas'

La estrella de HGTV, Christina Hall, revela que le diagnosticaron envenenamiento por mercurio y plomo, probablemente debido a su trabajo como manipuladora de casas.

La estrella de 'Love Is Blind' Brennon Lemieux responde a los cargos de violencia doméstica

La estrella de 'Love Is Blind' Brennon Lemieux responde a los cargos de violencia doméstica

Recientemente salió a la luz un informe policial que acusa a la estrella de 'Love Is Blind', Brennon, de violencia doméstica. Ahora, Brennon ha respondido a los reclamos.

Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia Judd en un momento festivo de pánico

Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia Judd en un momento festivo de pánico

Conozca cómo Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia mientras organizaba la primera celebración de Acción de Gracias desde que murió su madre, Naomi Judd.

Experto en lenguaje corporal explica los 'paralelos' entre Kate Middleton y la princesa Diana

Experto en lenguaje corporal explica los 'paralelos' entre Kate Middleton y la princesa Diana

Descubra por qué un destacado experto en lenguaje corporal cree que es fácil trazar "tales paralelismos" entre la princesa Kate Middleton y la princesa Diana.

Los láseres arrojan luz sobre por qué necesita cerrar la tapa antes de descargar

Los láseres arrojan luz sobre por qué necesita cerrar la tapa antes de descargar

Los inodoros arrojan columnas de aerosol invisibles con cada descarga. ¿Como sabemos? La prueba fue capturada por láseres de alta potencia.

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

¿Caduca el repelente de insectos?

¿Caduca el repelente de insectos?

¿Sigue siendo efectivo ese lote de repelente de insectos que te quedó del verano pasado? Si es así, ¿por cuánto tiempo?

Se revela la estatua de Godzilla más nueva de Tokio

Se revela la estatua de Godzilla más nueva de Tokio

Anteriormente, Kotaku informó que un hotel Godzilla se estaba abriendo en Tokio este abril. Junto al hotel, estaba programada la aparición de una enorme cabeza de 'Zilla, pero todo lo que hemos visto fueron imágenes conceptuales computarizadas.

El alcalde de Chicago realmente quiere que Elon Musk perfore un túnel debajo de la ciudad

El alcalde de Chicago realmente quiere que Elon Musk perfore un túnel debajo de la ciudad

Foto: Getty Desde que lanzó The Boring Company hace un año, Elon Musk ha mencionado varios sitios de construcción posibles para el negocio de perforación de túneles y ha descartado una vaga referencia a una aprobación gubernamental "verbal" para un túnel Hyperloop que conecta la ciudad de Nueva York y Washington. , CC. Pero ahora sabemos que al menos un alcalde quiere que Musk perfore un agujero debajo de su ciudad.

Ponle una tapa. En realidad, ponle una tapa a todo. Consigue 12 tapas de cocina elásticas de silicona por $14. [Exclusivo]

Ponle una tapa. En realidad, ponle una tapa a todo. Consigue 12 tapas de cocina elásticas de silicona por $14. [Exclusivo]

Tapas elásticas de silicona de Tomorrow's Kitchen, paquete de 12 | $14 | Amazonas | Código promocional 20OFFKINJALids son básicamente los calcetines de la cocina; siempre perdiéndose, dejando contenedores huérfanos que nunca podrán volver a cerrarse. Pero, ¿y si sus tapas pudieran estirarse y adaptarse a todos los recipientes, ollas, sartenes e incluso frutas en rodajas grandes que sobran? Nunca más tendrás que preocuparte por perder esa tapa tan específica.

Cuéntanos tus mejores trucos de Washington, DC

Cuéntanos tus mejores trucos de Washington, DC

Hemos pirateado algunas ciudades industriales en esta columna, como Los Ángeles y Las Vegas. Ahora es el momento de una ciudad militar-industrial-compleja.

Patinaje artístico de EE. UU. 'frustrado' por falta de decisión final en evento por equipos, pide una decisión justa

Patinaje artístico de EE. UU. 'frustrado' por falta de decisión final en evento por equipos, pide una decisión justa

El equipo está a la espera de las medallas que ganó en los Juegos Olímpicos de Invierno de 2022 en Beijing, ya que se está resolviendo un caso de dopaje que involucra a la patinadora artística rusa Kamila Valieva.

Los compradores de Amazon dicen que duermen 'como un bebé mimado' gracias a estas fundas de almohada de seda que cuestan tan solo $ 10

Los compradores de Amazon dicen que duermen 'como un bebé mimado' gracias a estas fundas de almohada de seda que cuestan tan solo $ 10

Miles de compradores de Amazon recomiendan la funda de almohada de seda Mulberry, y está a la venta en este momento. La funda de almohada de seda viene en varios colores y ayuda a mantener el cabello suave y la piel clara. Compre las fundas de almohada de seda mientras tienen hasta un 46 por ciento de descuento en Amazon

Se busca al corredor de los Bengals Joe Mixon por orden de arresto emitida por presuntamente apuntar con un arma de fuego a una mujer

Se busca al corredor de los Bengals Joe Mixon por orden de arresto emitida por presuntamente apuntar con un arma de fuego a una mujer

El jueves se presentó una denuncia de delito menor amenazante agravado contra Joe Mixon.

Profesor de la Universidad de Purdue arrestado por presuntamente traficar metanfetamina y proponer favores sexuales a mujeres

Profesor de la Universidad de Purdue arrestado por presuntamente traficar metanfetamina y proponer favores sexuales a mujeres

El Departamento de Policía de Lafayette comenzó a investigar a un profesor de la Universidad de Purdue en diciembre después de recibir varias denuncias de un "hombre sospechoso que se acercaba a una mujer".

Concept Drift: el mundo está cambiando demasiado rápido para la IA

Concept Drift: el mundo está cambiando demasiado rápido para la IA

Al igual que el mundo que nos rodea, el lenguaje siempre está cambiando. Mientras que en eras anteriores los cambios en el idioma ocurrían durante años o incluso décadas, ahora pueden ocurrir en cuestión de días o incluso horas.

India me está pateando el culo

India me está pateando el culo

Estoy de vuelta por primera vez en seis años. No puedo decirte cuánto tiempo he estado esperando esto.

ℝ

“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.

¿Merrick Garland le ha fallado a Estados Unidos?

Es más de la mitad de la presidencia de Biden. ¿Qué está esperando Merrick Garland?

¿Merrick Garland le ha fallado a Estados Unidos?

Creo, un poco tarde en la vida, en dar oportunidades a la gente. Generosamente.

Language