Con este artículo se inaugura la zona Android, implementaciones rápidas, sin problemas y entendibles para nosotros los retrasados que no leemos la documentación. Son muchas las formas de implementar el tema oscuro o de noche en una aplicación, una de estas formas nos la brinda la librería Appcompat del paquete de librerías AndroidX, que a partir de la Api 28 introduce una serie de mejoras enfocadas a estandarizar su uso y relacionarlo a los ámbitos diarios.

NOTA

Algunas funciones como la asignación de tema automático o según el consumo de batería están disponibles solo para la Api 28(Android 9).

Ingredientes


En el build.gradle de la aplicación, agregamos la dependencia o si la tenemos la actualizamos por:

implementation 'androidx.appcompat:appcompat:1.1.0-rc01'

Preparación

Dentro de la carpeta values/styles/, encontramos los archivos de nuestro tema.

•    Styles.xml
•    Styles.xml (21)

Editamos el primero, y cambiamos la herencia de nuestro tema por defecto, que es Theme.AppCompat.Light.DarkActionBar, debe quedar algo como lo siguiente:

name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar"
name="colorAccent">@color/colorAccent
name="android:windowTranslucentNavigation">true
name="android:navigationBarColor">@android:color/transparent

En caso de tener un NavigationDrawer, editar herencia de este tema:

name="AppTheme.PopupOverlay" parent="Theme.AppCompat.DayNight.DarkActionBar"

Creamos las mecánicas del manejador apoyándonos del uso de una preferencia.

SharedPreferences mDefaultPreferences; mDefaultPreferences = PreferenceManager.getDefaultSharedPreferences (this);
if (isChecked)
{
mDefaultPreferences.edit ().putBoolean ("dark_mode", true).apply ();
AppCompatDelegate.setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES);
}
else
{
mDefaultPreferences.edit ().putBoolean ("dark_mode", false).apply ();
AppCompatDelegate.setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_NO);
}

Ejemplo de implementación en un NavigationDrawer:
photo5141193604591626279 photo5141193604591626278

Repositorio del Ejemplo




Fuente del background


Fraternalmente I.I. Daniel Rosillo;
- Project Manager in Rosillo Labs



Leave a comment! We it!


Contact us