我正在尝试实现一个选项,让用户指定是否希望应用程序根据系统设置(深色或浅色,即设备是否设置为使用深色模式)加载主题,但我也提供覆盖系统设置的可能性。
第一次启动应用程序时,我可以使用类似此中指定的内容轻松找出此设置thread https://stackoverflow.com/questions/44170028/android-how-to-detect-if-night-mode-is-on-when-using-appcompatdelegate-mode-ni/66879004
然而,在强制主题后,这些似乎毫无用处:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
更改主题后,我无法再获取系统设置,因为它总是返回“暗模式打开”,除非我再次强制它亮起主题,但这里它总是返回“暗模式关闭”! :(
知道如何获取系统设置吗?
提前致谢,
FF
检测是否“system" 无论是否处于深色模式,您都可以使用获取夜间模式()的方法用户界面模式管理器 class.
https://developer.android.com/reference/android/app/UiModeManager#getNightMode() https://developer.android.com/reference/android/app/UiModeManager#getNightMode()
Like so,
UiModeManager uiModeManager = (UiModeManager) context.getSystemService(Context.UI_MODE_SERVICE);
int mode = uiModeManager.getNightMode();
if (mode == UiModeManager.MODE_NIGHT_YES) {
// System is in Night mode
} else if (mode == UiModeManager.MODE_NIGHT_NO) {
// System is in Day mode
}
如果想知道是否“your app" 是否处于夜间模式:
int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
switch (mode) {
case Configuration.UI_MODE_NIGHT_NO:
// App is in Day mode
break;
case Configuration.UI_MODE_NIGHT_YES:
// App is in Night mode
break;
case Configuration.UI_MODE_NIGHT_UNDEFINED:
// We don't know what mode we're in, assume notnight
break;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)