Android 主题切换大作战

来源:互联网 发布:云计算行业大事件 编辑:程序博客网 时间:2024/04/28 04:02

现在很多app都可以更换软件的主题颜色,曾经刚开始接触手机QQ,被震惊到了,我擦这都可以。

哈哈,不谈年少无知的事情了,进入正题:android 切换主题颜色

1.自定义属性(attr.xml文件中)

<attr name="colorValue" format="color" />

2.定义不同的style风格(style.xml文件中)

  <style name="PurpleTheme" parent="AppTheme">        <item name="colorValue">@color/title_bg</item>    </style>    <style name="GoldTheme" parent="AppTheme">        <item name="colorValue">@color/gold</item>    </style>
3.给Activity设置主题

设置顶部toolbar的背景颜色

       android:background="?attr/colorValue"

设置主题(toolbar每页都有,所以封装到了BaseActivity中)
需要注意的是:setTheme()方法一定要在setContentView()之前调用

  switch (type) {            case 0:                setTheme(R.style.PurpleTheme);                break;            case 1:                setTheme(R.style.GoldTheme);                break;        }
那应该怎么切换主题呢?

去网上查了之后,有人说用recreate()方法可以重新刷新下当前的Actvity,我在项目中尝试了,但是调用了recreate()方法就退出了,好不科学,一脸懵逼。(知道的朋友可以私信我)最后无奈就用了prism主题切换框架,但是prism框架只能改变当前页的主题(这一点让我很惊讶,好没用的框架,哈哈),所以如果要使当前Activity栈里的所有Activity主动切换主题,则需要手动地通知这些Activity(这边方法很多,我用的是EventBus)。

对主题切换框架prism不了解可以点这个网址  prismhttp://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0911/3440.html



0 0
原创粉丝点击