From 2049a857a3131895ea372b01c63432483f4cfbf6 Mon Sep 17 00:00:00 2001 From: Xavier Xiong Date: Sat, 11 Feb 2023 15:03:48 +0100 Subject: [PATCH] feat: AMOLED dark theme (#282) * Add AMOLED dark theme * Minor Fix * Add compatibility with dynamic colors * remove onused switch logic Co-authored-by: Yash Garg * Remove unnecessary statements * refactor: rename unused variable to `_` --------- Co-authored-by: Yash Garg Co-authored-by: Jarne Demeulemeester --- app/phone/src/main/java/dev/jdtech/jellyfin/MainActivity.kt | 4 ++++ .../jdtech/jellyfin/fragments/SettingsAppearanceFragment.kt | 6 ++++++ core/src/main/res/values-night/themes.xml | 6 ++++++ core/src/main/res/values/strings.xml | 2 ++ core/src/main/res/xml/fragment_settings_appearance.xml | 5 +++++ .../src/main/java/dev/jdtech/jellyfin/AppPreferences.kt | 1 + preferences/src/main/java/dev/jdtech/jellyfin/Constants.kt | 1 + 7 files changed, 25 insertions(+) diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/MainActivity.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/MainActivity.kt index f1b1ea9d..a28f4ceb 100644 --- a/app/phone/src/main/java/dev/jdtech/jellyfin/MainActivity.kt +++ b/app/phone/src/main/java/dev/jdtech/jellyfin/MainActivity.kt @@ -38,6 +38,10 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + if (appPreferences.amoledTheme) { + setTheme(R.style.Theme_FindroidAMOLED) + } + binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/SettingsAppearanceFragment.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/SettingsAppearanceFragment.kt index fecec562..277e779f 100644 --- a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/SettingsAppearanceFragment.kt +++ b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/SettingsAppearanceFragment.kt @@ -4,6 +4,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatDelegate import androidx.preference.ListPreference import androidx.preference.PreferenceFragmentCompat +import androidx.preference.SwitchPreferenceCompat import dev.jdtech.jellyfin.R @Suppress("unused") @@ -19,5 +20,10 @@ class SettingsAppearanceFragment : PreferenceFragmentCompat() { } true } + + findPreference("pref_amoled_theme")?.setOnPreferenceChangeListener { _, _ -> + requireActivity().recreate() + true + } } } diff --git a/core/src/main/res/values-night/themes.xml b/core/src/main/res/values-night/themes.xml index a27db654..aa22a750 100644 --- a/core/src/main/res/values-night/themes.xml +++ b/core/src/main/res/values-night/themes.xml @@ -19,4 +19,10 @@ #FFF + + \ No newline at end of file diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index cc58b58b..eb5dd54a 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -130,6 +130,8 @@ Seek forward increment (ms) Dynamic colors Use Material You Dynamic colors (only available on Android 12+) + AMOLED dark theme + Use AMOLED theme with a pure black background Subtitles Customize subtitles appearance Follow system diff --git a/core/src/main/res/xml/fragment_settings_appearance.xml b/core/src/main/res/xml/fragment_settings_appearance.xml index ac1a9202..fc66496d 100644 --- a/core/src/main/res/xml/fragment_settings_appearance.xml +++ b/core/src/main/res/xml/fragment_settings_appearance.xml @@ -12,6 +12,11 @@ app:key="dynamic_colors" app:summary="@string/dynamic_colors_summary" app:title="@string/dynamic_colors" /> +