实现夜间模式功能的正确方法

Proper way of implementing night mode feature

我知道使用 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); 夜间模式可以在 activity 中实现。但我想要的是 - 在应用程序的所有活动和片段中激活夜间模式的设置选项。我该怎么做?

实现此目的的一种方法:

  • 当您 select 设置 activity(或任何)中的动作夜间模式时 可以维护一个标志(并保存在 sharedpreference 或任何临时存储中)。

  • 在每个 activity & 片段上检查这个标志,如果标志 是肯定的设置你使用的夜间模式,

    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

您可以使用 NightModeHelper 来实现此目的,只需在 activity 的 onCreate 的顶部添加以下行,紧跟在 super.onCreate(); 之后 这里的想法是在我们创建任何视图之前执行此操作。因此新视图将使用正确的配置。

mNightModeHelper = new NightModeHelper(this, R.style.AppTheme);

在此处查看演示 https://github.com/zouliping/AndroidNightMode