Ila*_*lan 5 android night-shift
我正在寻找一种使用Android代码以编程方式启用夜间模式的方法:
public static void setNightMode(Context target , boolean state){
UiModeManager uiManager = (UiModeManager) target.getSystemService(Context.UI_MODE_SERVICE);
if (state) {
//uiManager.enableCarMode(0);
uiManager.setNightMode(UiModeManager.MODE_NIGHT_YES);
} else {
// uiManager.disableCarMode(0);
uiManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
}
}
Run Code Online (Sandbox Code Playgroud)
屏幕上没有任何变化,夜间模式仍处于禁用状态。根据这个链接
无需启用carMode或deskMode。我在Android Studio上有以下logcat:
11-26 12:15:16.662 3823-3823/? D/UiModeManager: updateConfigurationLocked: mDockState=0; mCarMode=false; mNightMode=2; uiMode=33
11-26 12:15:26.802 3823-3823/? V/UiModeManager: updateLocked: null action, mDockState=0, category=null
Run Code Online (Sandbox Code Playgroud)
Kis*_*nki 42
最简单的解决方案
您可以通过以下方式启用/禁用应用程序的深色主题:
启用深色主题:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
Run Code Online (Sandbox Code Playgroud)
强行禁用深色主题:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
Run Code Online (Sandbox Code Playgroud)
根据黑暗模式的移动设置设置应用程序主题,即如果启用了黑暗模式,则主题将设置为黑暗主题,如果不是,则为默认主题,但这仅适用于版本 >= Android 版本 Q (10)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
Run Code Online (Sandbox Code Playgroud)
笔记:
“Theme.AppCompat.DayNight”
喜欢
<style name="DarkTheme" parent="Theme.AppCompat.DayNight">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
drawable & drawable-night,
values & values-night
Nee*_*ani 13
确保从更改默认主题Theme.AppCompat.Light.DarkActionBar,以Theme.AppCompat.DayNight.DarkActionBar在styles.xml文件,然后做AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)切换到夜间模式。我已经在 APIv23(Android 6.0) 及更高版本中对其进行了测试,并且运行良好。有关更好的解释,请参阅Android 的此代码实验室
小智 6
这段代码对我来说非常有效,尽管您可能只需要重新启动您的应用程序。但请记住,此代码在系统范围内启用深色模式,而不仅仅是在应用程序中:
public static void setNightMode(Context target , boolean state){
UiModeManager uiManager = (UiModeManager) target.getSystemService(Context.UI_MODE_SERVICE);
if (VERSION.SDK_INT <= 22) {
uiManager.enableCarMode(0);
}
if (state) {
uiManager.setNightMode(UiModeManager.MODE_NIGHT_YES);
} else {
uiManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
}
}
Run Code Online (Sandbox Code Playgroud)
这对我在 Kitkat 有用。
| 归档时间: |
|
| 查看次数: |
2998 次 |
| 最近记录: |