Implement dynamic theme option
This commit is contained in:
@@ -35,8 +35,9 @@ abstract class BaseActivity<B : ViewBinding> : AppCompatActivity(), OnApplyWindo
|
|||||||
private var lastInsets: Insets = Insets.NONE
|
private var lastInsets: Insets = Insets.NONE
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
if (get<AppSettings>().isAmoledTheme) {
|
when {
|
||||||
setTheme(R.style.ThemeOverlay_Kotatsu_AMOLED)
|
get<AppSettings>().isAmoledTheme -> setTheme(R.style.ThemeOverlay_Kotatsu_AMOLED)
|
||||||
|
get<AppSettings>().isDynamicTheme -> setTheme(R.style.Theme_Kotatsu_Monet)
|
||||||
}
|
}
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ class AppSettings private constructor(private val prefs: SharedPreferences) :
|
|||||||
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
|
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val isDynamicTheme by BoolPreferenceDelegate(KEY_DYNAMIC_THEME, defaultValue = false)
|
||||||
|
|
||||||
val isAmoledTheme by BoolPreferenceDelegate(KEY_THEME_AMOLED, defaultValue = false)
|
val isAmoledTheme by BoolPreferenceDelegate(KEY_THEME_AMOLED, defaultValue = false)
|
||||||
|
|
||||||
val isToolbarHideWhenScrolling by BoolPreferenceDelegate(KEY_HIDE_TOOLBAR, defaultValue = true)
|
val isToolbarHideWhenScrolling by BoolPreferenceDelegate(KEY_HIDE_TOOLBAR, defaultValue = true)
|
||||||
|
|||||||
@@ -84,8 +84,8 @@ abstract class MangaListFragment : BaseFragment<FragmentListBinding>(),
|
|||||||
addOnScrollListener(paginationListener!!)
|
addOnScrollListener(paginationListener!!)
|
||||||
}
|
}
|
||||||
with(binding.swipeRefreshLayout) {
|
with(binding.swipeRefreshLayout) {
|
||||||
setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.kotatsu_primary))
|
setProgressBackgroundColorSchemeColor(context.getThemeColor(com.google.android.material.R.attr.colorPrimary))
|
||||||
setColorSchemeColors(ContextCompat.getColor(context, R.color.kotatsu_onPrimary))
|
setColorSchemeColors(context.getThemeColor(com.google.android.material.R.attr.colorOnPrimary))
|
||||||
setOnRefreshListener(this@MangaListFragment)
|
setOnRefreshListener(this@MangaListFragment)
|
||||||
isEnabled = isSwipeRefreshEnabled
|
isEnabled = isSwipeRefreshEnabled
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,6 +77,9 @@ class MainSettingsFragment : BasePreferenceFragment(R.string.settings),
|
|||||||
AppSettings.KEY_THEME -> {
|
AppSettings.KEY_THEME -> {
|
||||||
AppCompatDelegate.setDefaultNightMode(settings.theme)
|
AppCompatDelegate.setDefaultNightMode(settings.theme)
|
||||||
}
|
}
|
||||||
|
AppSettings.KEY_DYNAMIC_THEME -> {
|
||||||
|
findPreference<Preference>(key)?.setSummary(R.string.restart_required)
|
||||||
|
}
|
||||||
AppSettings.KEY_THEME_AMOLED -> {
|
AppSettings.KEY_THEME_AMOLED -> {
|
||||||
findPreference<Preference>(key)?.setSummary(R.string.restart_required)
|
findPreference<Preference>(key)?.setSummary(R.string.restart_required)
|
||||||
}
|
}
|
||||||
|
|||||||
44
app/src/main/res/values-night-v31/themes.xml
Normal file
44
app/src/main/res/values-night-v31/themes.xml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<!-- From ThemeOverlay.Material3.DynamicColors.Dark -->
|
||||||
|
<style name="Theme.Kotatsu.Monet">
|
||||||
|
<!-- Color palettes -->
|
||||||
|
<item name="colorPrimary">@color/m3_sys_color_dynamic_dark_primary</item>
|
||||||
|
<item name="colorOnPrimary">@color/m3_sys_color_dynamic_dark_on_primary</item>
|
||||||
|
<item name="colorPrimaryInverse">@color/m3_sys_color_dynamic_dark_inverse_primary</item>
|
||||||
|
<item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_dark_primary_container</item>
|
||||||
|
<item name="colorOnPrimaryContainer">@color/m3_sys_color_dynamic_dark_on_primary_container</item>
|
||||||
|
<item name="colorSecondary">@color/m3_sys_color_dynamic_dark_secondary</item>
|
||||||
|
<item name="colorOnSecondary">@color/m3_sys_color_dynamic_dark_on_secondary</item>
|
||||||
|
<item name="colorSecondaryContainer">@color/m3_sys_color_dynamic_dark_secondary_container</item>
|
||||||
|
<item name="colorOnSecondaryContainer">@color/m3_sys_color_dynamic_dark_on_secondary_container</item>
|
||||||
|
<item name="colorTertiary">@color/m3_sys_color_dynamic_dark_tertiary</item>
|
||||||
|
<item name="colorOnTertiary">@color/m3_sys_color_dynamic_dark_on_tertiary</item>
|
||||||
|
<item name="colorTertiaryContainer">@color/m3_sys_color_dynamic_dark_tertiary_container</item>
|
||||||
|
<item name="colorOnTertiaryContainer">@color/m3_sys_color_dynamic_dark_on_tertiary_container</item>
|
||||||
|
<item name="android:colorBackground">@color/m3_sys_color_dynamic_dark_background</item>
|
||||||
|
<item name="colorOnBackground">@color/m3_sys_color_dynamic_dark_on_background</item>
|
||||||
|
<item name="colorSurface">@color/m3_sys_color_dynamic_dark_surface</item>
|
||||||
|
<item name="colorOnSurface">@color/m3_sys_color_dynamic_dark_on_surface</item>
|
||||||
|
<item name="colorSurfaceVariant">@color/m3_sys_color_dynamic_dark_surface_variant</item>
|
||||||
|
<item name="colorOnSurfaceVariant">@color/m3_sys_color_dynamic_dark_on_surface_variant</item>
|
||||||
|
<item name="colorSurfaceInverse">@color/m3_sys_color_dynamic_dark_inverse_surface</item>
|
||||||
|
<item name="colorOnSurfaceInverse">@color/m3_sys_color_dynamic_dark_inverse_on_surface</item>
|
||||||
|
<item name="colorOutline">@color/m3_sys_color_dynamic_dark_outline</item>
|
||||||
|
|
||||||
|
<!-- Default Framework Text Colors. -->
|
||||||
|
<item name="android:textColorPrimary">@color/m3_dynamic_dark_default_color_primary_text</item>
|
||||||
|
<item name="android:textColorPrimaryInverse">@color/m3_dynamic_default_color_primary_text</item>
|
||||||
|
<item name="android:textColorSecondary">@color/m3_dynamic_dark_default_color_secondary_text</item>
|
||||||
|
<item name="android:textColorSecondaryInverse">@color/m3_dynamic_default_color_secondary_text</item>
|
||||||
|
<item name="android:textColorTertiary">@color/m3_dynamic_dark_default_color_secondary_text</item>
|
||||||
|
<item name="android:textColorTertiaryInverse">@color/m3_dynamic_default_color_secondary_text</item>
|
||||||
|
<item name="android:textColorPrimaryDisableOnly">@color/m3_dynamic_dark_primary_text_disable_only</item>
|
||||||
|
<item name="android:textColorPrimaryInverseDisableOnly">@color/m3_dynamic_primary_text_disable_only</item>
|
||||||
|
<item name="android:textColorHint">@color/m3_dynamic_dark_hint_foreground</item>
|
||||||
|
<item name="android:textColorHintInverse">@color/m3_dynamic_hint_foreground</item>
|
||||||
|
<item name="android:textColorHighlight">@color/m3_dynamic_dark_highlighted_text</item>
|
||||||
|
<item name="android:textColorHighlightInverse">@color/m3_dynamic_highlighted_text</item>
|
||||||
|
<item name="android:textColorAlertDialogListItem">@color/m3_dynamic_dark_default_color_primary_text</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
||||||
44
app/src/main/res/values-v31/themes.xml
Normal file
44
app/src/main/res/values-v31/themes.xml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<!-- From ThemeOverlay.Material3.DynamicColors.Light -->
|
||||||
|
<style name="Theme.Kotatsu.Monet">
|
||||||
|
<!-- Color palettes -->
|
||||||
|
<item name="colorPrimary">@color/m3_sys_color_dynamic_light_primary</item>
|
||||||
|
<item name="colorOnPrimary">@color/m3_sys_color_dynamic_light_on_primary</item>
|
||||||
|
<item name="colorPrimaryInverse">@color/m3_sys_color_dynamic_light_inverse_primary</item>
|
||||||
|
<item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_light_primary_container</item>
|
||||||
|
<item name="colorOnPrimaryContainer">@color/m3_sys_color_dynamic_light_on_primary_container</item>
|
||||||
|
<item name="colorSecondary">@color/m3_sys_color_dynamic_light_secondary</item>
|
||||||
|
<item name="colorOnSecondary">@color/m3_sys_color_dynamic_light_on_secondary</item>
|
||||||
|
<item name="colorSecondaryContainer">@color/m3_sys_color_dynamic_light_secondary_container</item>
|
||||||
|
<item name="colorOnSecondaryContainer">@color/m3_sys_color_dynamic_light_on_secondary_container</item>
|
||||||
|
<item name="colorTertiary">@color/m3_sys_color_dynamic_light_tertiary</item>
|
||||||
|
<item name="colorOnTertiary">@color/m3_sys_color_dynamic_light_on_tertiary</item>
|
||||||
|
<item name="colorTertiaryContainer">@color/m3_sys_color_dynamic_light_tertiary_container</item>
|
||||||
|
<item name="colorOnTertiaryContainer">@color/m3_sys_color_dynamic_light_on_tertiary_container</item>
|
||||||
|
<item name="android:colorBackground">@color/m3_sys_color_dynamic_light_background</item>
|
||||||
|
<item name="colorOnBackground">@color/m3_sys_color_dynamic_light_on_background</item>
|
||||||
|
<item name="colorSurface">@color/m3_sys_color_dynamic_light_surface</item>
|
||||||
|
<item name="colorOnSurface">@color/m3_sys_color_dynamic_light_on_surface</item>
|
||||||
|
<item name="colorSurfaceVariant">@color/m3_sys_color_dynamic_light_surface_variant</item>
|
||||||
|
<item name="colorOnSurfaceVariant">@color/m3_sys_color_dynamic_light_on_surface_variant</item>
|
||||||
|
<item name="colorSurfaceInverse">@color/m3_sys_color_dynamic_light_inverse_surface</item>
|
||||||
|
<item name="colorOnSurfaceInverse">@color/m3_sys_color_dynamic_light_inverse_on_surface</item>
|
||||||
|
<item name="colorOutline">@color/m3_sys_color_dynamic_light_outline</item>
|
||||||
|
|
||||||
|
<!-- Default Framework Text Colors. -->
|
||||||
|
<item name="android:textColorPrimary">@color/m3_dynamic_default_color_primary_text</item>
|
||||||
|
<item name="android:textColorPrimaryInverse">@color/m3_dynamic_dark_default_color_primary_text</item>
|
||||||
|
<item name="android:textColorSecondary">@color/m3_dynamic_default_color_secondary_text</item>
|
||||||
|
<item name="android:textColorSecondaryInverse">@color/m3_dynamic_dark_default_color_secondary_text</item>
|
||||||
|
<item name="android:textColorTertiary">@color/m3_dynamic_default_color_secondary_text</item>
|
||||||
|
<item name="android:textColorTertiaryInverse">@color/m3_dynamic_dark_default_color_secondary_text</item>
|
||||||
|
<item name="android:textColorPrimaryDisableOnly">@color/m3_dynamic_primary_text_disable_only</item>
|
||||||
|
<item name="android:textColorPrimaryInverseDisableOnly">@color/m3_dynamic_dark_primary_text_disable_only</item>
|
||||||
|
<item name="android:textColorHint">@color/m3_dynamic_hint_foreground</item>
|
||||||
|
<item name="android:textColorHintInverse">@color/m3_dynamic_dark_hint_foreground</item>
|
||||||
|
<item name="android:textColorHighlight">@color/m3_dynamic_highlighted_text</item>
|
||||||
|
<item name="android:textColorHighlightInverse">@color/m3_dynamic_dark_highlighted_text</item>
|
||||||
|
<item name="android:textColorAlertDialogListItem">@color/m3_dynamic_default_color_primary_text</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
||||||
Reference in New Issue
Block a user