Android 12 y detección de material you.
Estoy intentando actualizar mi tema con el nuevo Material You, funciona cuando selecciono un color en el parámetro de Android (parte roja de la captura de pantalla), pero cuando lo desactivo (parte azul), tengo el color predeterminado del valor establecido en el SDK xml.
Ejemplo con: @android:color/systemaccent10
Quiero saber cómo verificar si el usuario lo selecciona o no (parte roja o azul en la captura de pantalla), de esta manera usaré otro tema cuando esté desactivado. Supongo que necesito usar el nuevo método: applyToActivitiesIfAvailable:
@Override
public void onCreate() {
super.onCreate();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
DynamicColors.applyToActivitiesIfAvailable(this, R.style.AppDynamicTheme, (activity, themeResId) -> {
// …implemente su propia lógica aquí. Regrese “verdadero” si se deben aplicar colores dinámicos.
return true; // <- ¿Cómo saber si está habilitado o deshabilitado en el parámetro de Android ?
});}
Mi segunda pregunta es acerca del icono de la aplicación, cuando pongo el color en blanco en el fondo de ic_launcher.xml funciona, pero no con otro color, ¿sabes por qué?
Gracias
davy.ai
Para comprobar si el usuario ha seleccionado un color o no, puedes utilizar el siguiente código en combinación con la clase
DynamicColors
y el métodoapplyToActivitiesIfAvailable
:Este código recupera el acento de color seleccionado del tema y lo compara con el color de acento del sistema. Si coinciden, significa que el usuario ha seleccionado un color.
En cuanto a tu segunda pregunta acerca del icono que no funciona con otros colores, es difícil decirlo sin ver tu código. Asegúrate de que estás utilizando el código de color correcto y que está en el formato correcto. También es posible que el icono no sea compatible con ciertos colores.