In this example, I am using Material Design. But you can also use the Theme.AppCompat.DayNight.

This is a simple way to adapt a dark mode, if you wants more, check for GitHub or Internet.

Change the style

First you should use the DayNight style by Google.

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">

If you want to let things easily, that’s enough. But you can also provide more adaptation.

Adapt colors

Make a new folder at project/app/src/main/res/values-night then make a new resource file colors.xml. Edit the color you want to set on dark mode.

For example, you want to let the color of colorPrimary black on dark mode which is green on default.

On your values/colors.xml, you have this lien to mak the colorPrimary green.

<!-- on file values/colors.xml -->
<color name="colorPrimary">#3DDC84</color>

You just add a new line on values-night/colors.xml like this.

<!-- on file values-night/colors.xml -->
<color name="colorPrimary">#000000</color>

Then the AndroidStudio will understand what you have done and usr the #000000 when on night mode and use #3DDC84 on default.

But if you have these color resource on values/colors.xml which is not used for theme, just let them in, you need to add them to values-night/colors.xml.

<!-- Common -->
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
<color name="red">#FF0000</color>
<color name="green">#008000</color>
<color name="blue">#0000FF</color>
<color name="yellow">#FFFF00</color>
<color name="teal">#008080</color>
<color name="Orange">#FFA500</color>

So, If you want to change the color on night mode, just add it on values-night/colors.xml. AndroidStudio will use colors in values/colors.xml on default and use colors in values-night/colors.xml when in dark mode.

Adapt themes

Like what I write on Adapt colors, just add a themes.xml on folder project/app/src/main/res/values-night.