Как установить дневную и ночную тему в приложении для Android

Я создал приложение для Android, которое использует список предпочтений для установки темы дневного и ночного режима.

Мои стили.xml

<style name="Theme.FullScreen" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen"></style> <style name="PreferencesTheme" parent="android:Theme.Light"> <item name="android:background">#FFEAEAEA</item> </style> <style name="PreferencesTheme" parent="android:Theme.Light"> <item name="android:windowBackground">@drawable/ic_icon_settings</item> </style> 

Кто-нибудь знает, как я могу применить ночной и дневной режим к моим стилям.xml

Вы должны посмотреть пример HoneycombGallery из приложений приложений Android 3.2 API13.

Как они это реализовали:

Объявите две темы в ваших styles.xml :

 <style name="ActionBar" parent="@android:style/Widget.Holo.ActionBar" /> <style name="ActionBar.Light" parent="@style/ActionBar"> <item name="android:background">@color/actionbar_background_light</item> </style> <style name="ActionBar.Dark" parent="@style/ActionBar"> <item name="android:background">@color/actionbar_background_dark</item> </style> <style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/ActionBar.Light</item> <item name="android:windowActionBarOverlay">true</item> <item name="listDragShadowBackground">@android:color/background_light</item> <item name="menuIconCamera">@drawable/ic_menu_camera_holo_light</item> <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_light</item> <item name="menuIconShare">@drawable/ic_menu_share_holo_light</item> </style> <style name="AppTheme.Dark" parent="@android:style/Theme.Holo"> <item name="android:actionBarStyle">@style/ActionBar.Dark</item> <item name="android:windowActionBarOverlay">true</item> <item name="listDragShadowBackground">@android:color/background_dark</item> <item name="menuIconCamera">@drawable/ic_menu_camera_holo_dark</item> <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_dark</item> <item name="menuIconShare">@drawable/ic_menu_share_holo_dark</item> </style> 

МЕНЮ ДЛЯ ПЕРЕКЛЮЧЕНИЯ МЕЖДУ РЕЖИМАМИ:

Это main_menu.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/toggleTheme" android:title="Day/Night" android:showAsAction="never" /> </menu> 

И класс MainActivity где они переключаются между режимами « День» и « Ночь» :

ПРИМЕЧАНИЕ. Я удалил другой материал, который не является необходимым для контекста этого вопроса.

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.toggleTheme: if (mThemeId == R.style.AppTheme_Dark) { mThemeId = R.style.AppTheme_Light; } else { mThemeId = R.style.AppTheme_Dark; } this.recreate(); return true; default: return super.onOptionsItemSelected(item); } } 

Глобальная переменная, необходимая для переключения между режимами:

 private int mThemeId = -1; 

И для сохранения последнего выбранного режима в onCreate ():

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

Но загрузите образцы из диспетчера SDK и посмотрите фактическое (полное) функционирование.