Android - 使用 AppCompatDelegate.MODE_NIGHT_AUTO 时如何检测夜间模式是否打开

标签 android android-night-mode

我使用的是内置日间/夜间模式功能的 Android,我想向我的应用添加一个 AppCompatDelegate.MODE_NIGHT_AUTO 选项

我遇到了问题,因为我的应用程序需要以编程方式对某些内容进行着色,并且我不知道如何检查应用程序是否认为自己处于夜间或白天模式。如果没有它,我就无法设置标志来选择正确的颜色。

调用AppCompatDelegate.getDefaultNightMode()只会返回AppCompatDelegate.MODE_NIGHT_AUTO,这是无用的。

我没有看到任何其他信息可以告诉我,但一定有什么东西?

最佳答案

int nightModeFlags =
    getContext().getResources().getConfiguration().uiMode &
    Configuration.UI_MODE_NIGHT_MASK;
switch (nightModeFlags) {
    case Configuration.UI_MODE_NIGHT_YES:
         doStuff();
         break;

    case Configuration.UI_MODE_NIGHT_NO:
         doStuff();
         break;

    case Configuration.UI_MODE_NIGHT_UNDEFINED:
         doStuff();
         break;
}

关于Android - 使用 AppCompatDelegate.MODE_NIGHT_AUTO 时如何检测夜间模式是否打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57054266/

相关文章:

java - 在日/夜模式之间切换时启用平滑的 Activity 过渡

android - 更新夜间模式的小部件

android - 在android中制作具有不同颜色的背景矩形

java - 调试时无法实例化 Activity 问题

android - 为什么我在 Android 中遇到了 BackPressed 问题

android - fragment 中的 getDelegate() 方法?

android - 强制 Android 小部件占据整个屏幕宽度

java - 安卓/Java : Check if url is valid youtube url

android - 如何在夜间模式下更改深色操作栏的颜色?

android - 在 Android 中更改为夜间模式时,如何对整个屏幕(所有可见 View /布局)的颜色进行动画处理?