歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 4: 動態切換界面風格

Android 4: 動態切換界面風格

日期:2017/3/1 10:31:24   编辑:Linux編程

Theme.Light:

Theme.Dark:


1. styles.xml定義兩套theme

[html]

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <style name="AppTheme.Light" parent="@Android:style/Theme.Holo.Light">
  4. <item name="menuIconToggleTitle">@drawable/ic_menu_toggle_title_holo_light</item>
  5. <item name="menuIconToggleTheme">@drawable/ic_menu_toggle_theme_holo_light</item>
  6. </style>
  7. <style name="AppTheme.Dark" parent="@android:style/Theme.Holo">
  8. <item name="menuIconToggleTitle">@drawable/ic_menu_toggle_title_holo_dark</item>
  9. <item name="menuIconToggleTheme">@drawable/ic_menu_toggle_theme_holo_dark</item>
  10. </style>
  11. </resources>
2. 點擊Day/Night時

[html]

  1. case R.id.menu_toggleTheme:
  2. if (mThemeId == R.style.AppTheme_Dark) {
  3. mThemeId = R.style.AppTheme_Light;
  4. } else {
  5. mThemeId = R.style.AppTheme_Dark;
  6. }
  7. this.recreate();
  8. return true;
3. theme id 保存為savedInstanceState

[html]

  1. @Override
  2. public void onSaveInstanceState (Bundle outState) {
  3. super.onSaveInstanceState(outState);
  4. outState.putInt("theme", mThemeId);
  5. }
4. onCreate中根據theme id 加載theme

[html]

  1. if(savedInstanceState != null) {
  2. if (savedInstanceState.getInt("theme", -1) != -1) {
  3. mThemeId = savedInstanceState.getInt("theme");
  4. this.setTheme(mThemeId);
  5. }
  6. }
Copyright © Linux教程網 All Rights Reserved