Android黑白主题切换

使用Android原生的黑白主题切换方式实现,各应用需要准备两套资源文件,创建drawable-night,values-night等文件夹存放深色模式资源文件,资源文件名称,颜色名称等无需变化,与drawable,values下保持一致即可。实现方式有两种:

  1. 需要监听主题切换,需要在AndroidManifest的activity标签增加android:configChanges = “uiMode”,重写onConfigurationChanged方法,在onConfigurationChanged中处理切换主题后的逻辑,重新加载资源;
    监听onConfigurationChanged的方式如下:
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    Log.d(TAG,"onConfigurationChanged");
    //todo
}
//此方式可以实现不重启切换主题,页面不是太多建议使用此方式。

2.不需要监听主题切换,则不需要增加android:configChanges = “uiMode”,切换主题后,应用会自动重启重新load资源,(若切换后应用未自动重启,尝试一下更新build.gradle中androidx.appcompat:appcompat的版本到1.4.0以上)。
注意:activity需要继承自AppCompatActivity!

  1. 监听onConfigurationChanged,收到主题变化通知后重启应用,执行
    public void reCreate(){
        finish();
        startActivity(new Intent( this, this.getClass()));
        overridePendingTransition(0, 0);
    }
//无退出动画下重启应用,重新加载资源文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值