Android4: 动态切换界面风格

Theme.Light:

Theme.Dark:


1. styles.xml定义两套theme

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light">
        <item name="menuIconToggleTitle">@drawable/ic_menu_toggle_title_holo_light</item>
        <item name="menuIconToggleTheme">@drawable/ic_menu_toggle_theme_holo_light</item>
    </style>
    <style name="AppTheme.Dark" parent="@android:style/Theme.Holo">
        <item name="menuIconToggleTitle">@drawable/ic_menu_toggle_title_holo_dark</item>
        <item name="menuIconToggleTheme">@drawable/ic_menu_toggle_theme_holo_dark</item>
    </style>        
</resources>

2. 点击Day/Night时

        case R.id.menu_toggleTheme:
            if (mThemeId == R.style.AppTheme_Dark) {
                mThemeId = R.style.AppTheme_Light;
            } else {
                mThemeId = R.style.AppTheme_Dark;
            }
            this.recreate();
            return true;

3. theme id 保存为savedInstanceState

    @Override
    public void onSaveInstanceState (Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("theme", mThemeId);
    }

4. onCreate中根据theme id 加载theme

        if(savedInstanceState != null) {

            if (savedInstanceState.getInt("theme", -1) != -1) {
              mThemeId = savedInstanceState.getInt("theme");
              this.setTheme(mThemeId);
            }
        }









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值