- List item
资源
黑夜白天使用不同的资源,在文件夹后添加-night加以区分,每个文件下放置的资源需要同名
drawable - drawable-night
values - values-night
layout - layout-night
2.切换不同模式
第一种方法
public void switchNightMode() {
UiModeManager uiManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
if(uiManager.getNightMode() == UiModeManager.MODE_NIGHT_YES) {
// 如果当前是夜间模式,切换到日间模式
uiManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
} else {
// 否则切换到夜间模式
uiManager.setNightMode(UiModeManager.MODE_NIGHT_YES);
}
recreate();
}
第二种方法
public void switchNightMode() {
int currentNightMode = AppCompatDelegate.getDefaultNightMode();
if(currentNightMode == AppCompatDelegate.MODE_NIGHT_YES) {
// 如果当前是夜间模式,切换到日间模式
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
} else {
// 否则切换到夜间模式
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}
// 重启Activity以应用新的主题
recreate();
}
切换模式后一定要recreate() 主题才能生效