diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index 1b8f3190e..534d81b09 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -133,6 +133,8 @@ public class MainActivity extends AppCompatActivity { if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { TLSSocketFactoryCompat.setAsDefault(); } + + ThemeHelper.setDayNightMode(this); ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this)); assureCorrectAppLanguage(this); diff --git a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java index e2ac2c20d..26f67c15f 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java @@ -13,6 +13,7 @@ import androidx.preference.Preference; import org.schabi.newpipe.R; import org.schabi.newpipe.util.Constants; +import org.schabi.newpipe.util.ThemeHelper; public class AppearanceSettingsFragment extends BasePreferenceFragment { private static final boolean CAPTIONING_SETTINGS_ACCESSIBLE = @@ -89,6 +90,8 @@ public class AppearanceSettingsFragment extends BasePreferenceFragment { defaultPreferences.edit().putBoolean(Constants.KEY_THEME_CHANGE, true).apply(); defaultPreferences.edit().putString(themeKey, newValue.toString()).apply(); + ThemeHelper.setDayNightMode(getContext(), newValue.toString()); + if (!newValue.equals(beginningThemeKey) && getActivity() != null) { // if it's not the current theme ActivityCompat.recreate(getActivity()); diff --git a/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java b/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java index dcfb7ed19..ff7dd9b86 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java @@ -31,6 +31,7 @@ import androidx.annotation.Nullable; import androidx.annotation.StyleRes; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatDelegate; import androidx.core.content.ContextCompat; import androidx.preference.PreferenceManager; @@ -120,6 +121,7 @@ public final class ThemeHelper { final String selectedThemeKey = getSelectedThemeKey(context); + int baseTheme = R.style.DarkTheme; // default to dark theme if (selectedThemeKey.equals(lightThemeKey)) { baseTheme = R.style.LightTheme; @@ -288,4 +290,21 @@ public final class ThemeHelper { return false; } } + + public static void setDayNightMode(final Context context) { + setDayNightMode(context, ThemeHelper.getSelectedThemeKey(context)); + } + + public static void setDayNightMode(final Context context, final String selectedThemeKey) { + final Resources res = context.getResources(); + + if (selectedThemeKey.equals(res.getString(R.string.light_theme_key))) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); + } else if (selectedThemeKey.equals(res.getString(R.string.dark_theme_key)) + || selectedThemeKey.equals(res.getString(R.string.black_theme_key))) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); + } else { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); + } + } } diff --git a/app/src/main/res/layout-land/activity_player_queue_control.xml b/app/src/main/res/layout-land/activity_player_queue_control.xml index b106e7437..929d55a70 100644 --- a/app/src/main/res/layout-land/activity_player_queue_control.xml +++ b/app/src/main/res/layout-land/activity_player_queue_control.xml @@ -12,8 +12,8 @@ android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:theme="@style/ThemeOverlay.AppCompat.ActionBar" - app:popupTheme="@style/ThemeOverlay.AppCompat.ActionBar"> + android:theme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar" + app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar"> + android:theme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar" + app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar"> + android:theme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar" + app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar"> - diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index d7e7ab1dc..d02924958 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,6 +1,6 @@ - - - - - - - - - -