Android
Tema DayNight (AppCompat v23.2 / API 14+)
Buscar..
Adición del tema DayNight a una aplicación
El tema DayNight le da a una aplicación la genial capacidad de cambiar los esquemas de color según la hora del día y la última ubicación conocida del dispositivo.
Agregue lo siguiente a su styles.xml :
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Los temas que puede ampliar para agregar la capacidad de cambio de tema de día por la noche son los siguientes:
-
"Theme.AppCompat.DayNight" -
"Theme.AppCompat.DayNight.NoActionBar" -
"Theme.AppCompat.DayNight.DarkActionBar"
Además de colorPrimary , colorPrimaryDark y colorAccent , también puede agregar cualquier otro color que desee cambiar, por ejemplo, textColorPrimary o textColorSecondary . También puede agregar los colores personalizados de su aplicación a este style .
Para que el cambio de tema funcione, debe definir un colors.xml predeterminado en el directorio res/values y otro colors.xml en el directorio res/values-night y definir adecuadamente los colores día / noche.
Para cambiar el tema, llame al AppCompatDelegate.setDefaultNightMode(int) desde su código Java. (Esto cambiará el esquema de color para toda la aplicación, no solo una actividad o fragmento). Por ejemplo:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
Puede pasar cualquiera de los siguientes tres de acuerdo a su elección:
-
AppCompatDelegate.MODE_NIGHT_NO: esto establece el tema predeterminado para su aplicación y toma los colores definidos en el directoriores/values. Se recomienda utilizar colores claros para este tema. -
AppCompatDelegate.MODE_NIGHT_YES: establece un tema nocturno para su aplicación y toma los colores definidos en el directoriores/values-night. Se recomienda utilizar colores oscuros para este tema. -
AppCompatDelegate.MODE_NIGHT_AUTO: este cambia automáticamente los colores de la aplicación según la hora del día y los colores que haya definido en los directorios devaluesyvalues-night.
También es posible obtener el estado actual del modo nocturno utilizando el método getDefaultNightMode() . Por ejemplo:
int modeType = AppCompatDelegate.getDefaultNightMode();
Sin embargo, tenga en cuenta que el cambio de tema no persistirá si mata la aplicación y la vuelve a abrir. Si lo hace, el tema volverá a AppCompatDelegate.MODE_NIGHT_AUTO , que es el valor predeterminado. Si desea que el cambio de tema persista, asegúrese de almacenar el valor en las preferencias compartidas y de cargar el valor almacenado cada vez que se abra la aplicación después de que se haya destruido.