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);
}
}