最近写了个小功能,切换应用主题,从而改变沉浸式状态栏的颜色。
功能很简单,下面贴一下详细代码,有不懂的欢迎交流,或者有更好的想法,也欢迎相互学习。
首先:沉浸式状态栏呢,文章有很多。我这有我自己的一种。
注:我这选择还有点小问题没有处理,小问题小问题。嘿嘿

一、沉浸式状态栏
首先布局加上这两个属性,然后activity的主题设置为NoActionBar。这个很简单。至于使用toolbar还是什么,自己决定。
我这里就用了个普通的布局当toolbar使用。android:background="?attr/toolbarBgColor" 这个颜色呢是自定义的属性
随后会随着主题切换而切换,定义随后会介绍。

随后在activity onCreate方法中设置statusBar颜色,注意要在setContentView之前
参数color呢就是状态栏的颜色。


到这里,沉浸式状态栏就算是弄完了。
二、主题切换
首先,我们需要在attr.xml中自定义一些属性。



随后,在你的布局xml文件toolbar中设置背景:android:background="?attr/toolbarBgColor"
这样,你切换主题的时候,他就会根据主题切换相应的颜色。
以上是改变toolbar的颜色。下面介绍下改变statusBar的颜色.


红框区域呢,是对上面 setActionBarColor的进一步扩展,setAppTheme和getAppTheme呢,是获取你所修改的主题ID。
默认MainAppTheme。 setStatusBarTintColor呢是把上面设置指定颜色修改为,根据主题切换,获取主题的statusBarColor
颜色来进行设置。bean是我的recyclerView Item实体类中


至于setAppTheme和getAppTheme。你是所设置的主题。你可以写一个ListView,RecyclerView颜色列表。
选中其中的某一项的时候,来存储对应的主题,然后重启Acitivity。(在activity创建的时候添加到一个数组中,销毁时移除)。
最后简单写下我的设置主题功能:比较笨戳,但是个人觉得还行。
实体类:

数据:这里的R.color.XXXX 就是对应主题中的 toolbarBgColor 用来设置RcyclerView item背景颜色

适配器:


这里很简单了。就不具体介绍了。
以上,就是动态的改变状态栏,toolbar颜色。也就是主题切换。可以能代码比较繁琐。
或是有欠佳的地方。欢迎读者反馈,一块交流,一块分享、学习。
哈哈哈~~~~~~~~~~~~~~~~~~~~~~
附上一句艾弗森经典:
No matter what ,just do not give up .Always believe that your dream can come true & just keep working for what you want to achieve。
这篇博客讲述了如何在Android应用中实现主题切换,并动态改变沉浸式状态栏的颜色。作者首先介绍了设置沉浸式状态栏的基本步骤,包括在布局中添加特定属性和在Activity中设置状态栏颜色。接着,详细讲解了主题切换的实现,通过自定义属性并在XML布局中应用,确保ToolBar颜色随主题变化。此外,还讨论了如何根据主题切换状态栏颜色,并提供了相关代码示例。最后,作者鼓励读者分享和交流,共同进步。

4509

被折叠的 条评论
为什么被折叠?



