android - personalizar - El icono heredado no se muestra cuando se usa un icono adaptativo
menu toolbar android (3)
La solución es tener mipmap-anydpi-v26/ic_launcher.xml
para los iconos adaptativos aplicables a nivel de API 26 y superiores y para otros niveles de API. ic_launcher.png
(Nota: No ic_launcher.xml) en todas las carpetas de mimpap.
Explicación :
Aquí está el problema básico mipmap-anydpi
tiene prioridad sobre todos los otros mipmap-*
. Entonces, si el recurso se encuentra en mipmap-anydpi
, siempre tendrá preferencia. Ahora mipmap-anydpi-v26
es un filtro sobre este que dice que los recursos de mipmap-anydpi-v26
siempre se seleccionarán independientemente de la densidad de los dispositivos solo si el nivel de API es 26 o más (Oreo).
Ahora tu manifiesto tiene android:icon="@mipmap/ic_launcher"
Si su dispositivo tiene un nivel de API 26 o superior, Android elegirá usar mipmap-anydpi-v26/ic_launcher.xml
y todo funcionará bien.
El problema ocurre cuando el nivel de API es inferior a 26. Estadísticas de Android que buscan un recurso llamado ic_launcher
. Nunca irá y buscará en mipmap-anydpi-v26
debido a la restricción de nivel de API. A continuación, buscaría el recurso en mipmap-anydpi
y, si no está allí, el recurso de densidad real, por ejemplo, mipmap-mdpi
.
A continuación, no puede dar ic_launcher.xml
a dispositivos Android menos que sdk 26 porque no sabe qué son los iconos adaptativos.
Por lo tanto, la solución es tener mipmap-anydpi-v26/ic_launcher.xml
para los iconos adaptativos aplicables para el nivel de API 26 y superior y para otros niveles de API, poner ic_launcher.png
(Nota: No ic_launcher.xml) en todas las carpetas de mimpap.
Acabo de convertir el ícono de mi aplicación para que sea compatible con los íconos adaptables de android o usando Image Asset Studio
en android studio.
cuando ejecuto mi proyecto ahora en mi dispositivo con API 25, obtengo el ícono verde predeterminado de Android y no mi ícono.
este es mi manifiesto
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:allowBackup="false"
android:roundIcon="@mipmap/ic_launcher_round"
tools:replace="allowBackup"
tools:ignore="GoogleAppIndexingWarning">
Y estos son los archivos que creó el estudio de imágenes de activos.
¿Es solo un error de Android Studio o me perdí algo?
Si aún no funciona, compruebe su esquema XML, si utiliza la importación automática de Android Studio, no funcionará, debería ser / apk / res / android. Aquí está el código:
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
Tuve el mismo problema y lo resolví cambiando el nombre de mi directorio mipmap-anydpi
a mipmap-anydpi-v26
.
Aparentemente, el archivo ic_launcher.xml
confunde las versiones anteriores de Android, y esto lo oculta de todos menos de O. De todos modos, mis iconos ahora funcionan en todas las versiones (hasta el SDK 11, al menos).