Android 黑夜白天模式切换不同资源

  1. 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() 主题才能生效

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值