tachiyomi/app/src/main/res/values/themes.xml
Soitora 176e984b56
Add "Midnight Dusk" and "Hot Pink" themes (#5161)
* Organize and clarify themes file

Increases clarification with better commenting, should make it easier to add or modify current themes.

* Make AMOLED its own theme category

* Tweak ripples for AMOLED

* Add "Midnight Dusk" theme

Ports it from jobobby04/TachiyomiSY.

Co-Authored-By: CrepeTF <70870719+CrepeTF@users.noreply.github.com>

* Add "Hot Pink" theme

Ports it from jobobby04/TachiyomiSY.

Co-Authored-By: OncePunchedMan <64155117+OncePunchedMan@users.noreply.github.com>

* Make AMOLED a base theme

* Final tweaks

Rename "Toolbar.Light" to "Custom.PopupTheme"
Changes placing of backgroundDusk

Removes HotPink and MidnightDusk custom Toolbars, I believe they are unnecessary.

* Rename a Midnight Dusk color

* Make AMOLED independent from Dark as a theme

Co-authored-by: CrepeTF <70870719+CrepeTF@users.noreply.github.com>
Co-authored-by: OncePunchedMan <64155117+OncePunchedMan@users.noreply.github.com>
2021-05-24 11:16:32 -04:00

438 lines
23 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--============-->
<!-- Base Theme -->
<!--============-->
<!--== Theme ==-->
<style name="Theme" />
<!--== Theme base ==-->
<style name="Theme.Base" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- AppBar -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<!-- Disallow 'Force dark theme' -->
<item name="android:forceDarkAllowed" tools:targetApi="Q">false</item>
<!-- Theme colors -->
<item name="colorPrimary">@color/md_white_1000</item>
<item name="colorOnPrimary">@color/md_black_1000</item>
<item name="colorAccentOnPrimary">@color/colorAccentLight</item>
<item name="colorPrimaryVariant">@color/md_white_1000</item>
<item name="colorSecondary">@color/colorAccentLight</item>
<item name="colorOnSecondary">@color/md_white_1000</item>
<item name="colorSurface">@color/dialogLight</item>
<item name="colorOnSurface">@color/textColorPrimaryLight</item>
<item name="colorOnBackground">@color/textColorPrimaryLight</item>
<item name="colorAccent">@color/colorAccentLight</item>
<!-- Base background/text colors -->
<item name="android:colorBackground">@color/backgroundLight</item>
<item name="android:textColorPrimary">@color/textColorPrimaryLight</item>
<item name="android:textColorSecondary">@color/textColorSecondaryLight</item>
<item name="android:textColorHint">@color/textColorHintLight</item>
<item name="android:textColorPrimaryInverse">@color/textColorPrimaryDark</item>
<item name="android:textColorSecondaryInverse">@color/textColorSecondaryDark</item>
<item name="android:textColorHintInverse">@color/textColorHintDark</item>
<item name="android:colorEdgeEffect">?attr/colorAccent</item>
<item name="android:divider">@color/dividerLight</item>
<item name="android:listDivider">@drawable/line_divider</item>
<!-- Ripples -->
<item name="rippleColor">@color/rippleColorLight</item>
<item name="rippleSecondaryColor">@color/rippleSecondaryColorLight</item>
<item name="rippleToolbarColor">@color/rippleToolbarColorLight</item>
<!-- Handles RTL text -->
<item name="android:textAlignment">gravity</item>
<item name="android:textDirection">locale</item>
<!-- Themes -->
<item name="android:statusBarColor">@color/md_black_1000</item>
<item name="android:navigationBarColor">@color/md_black_1000</item>
<item name="android:navigationBarDividerColor" tools:targetApi="o_mr1">@null</item>
<item name="android:enforceNavigationBarContrast" tools:targetApi="Q">false</item>
<item name="windowActionModeOverlay">true</item>
<item name="elevationOverlayEnabled">false</item>
<item name="actionModeStyle">@style/Theme.ActionMode</item>
<item name="actionModeCloseButtonStyle">@style/Theme.ActionMode.CloseButton</item>
<item name="actionModeCloseDrawable">@drawable/ic_close_24dp</item>
<item name="actionBarTheme">@style/Theme.Toolbar.Custom.Light</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.MaterialComponents</item>
<item name="toolbarNavigationButtonStyle">@style/Theme.Toolbar.Navigation</item>
<item name="preferenceTheme">@style/PreferenceThemeCustom</item>
<item name="dialogTheme">@style/Theme.AlertDialog.Light</item>
<item name="materialAlertDialogTheme">@style/Theme.AlertDialog.Light</item>
<item name="bottomSheetDialogTheme">@style/Theme.BottomSheet</item>
<item name="chipStyle">@style/Theme.Widget.Chip</item>
<item name="buttonStyle">@style/Theme.Widget.Button</item>
<item name="snackbarStyle">@style/Theme.Widget.Snackbar</item>
<item name="snackbarButtonStyle">@style/Theme.Widget.Button</item>
<item name="snackbarTextViewStyle">@style/Theme.Widget.Snackbar.TextView</item>
<item name="textAppearanceButton">@style/TextAppearance.Widget.Button</item>
<item name="textInputStyle">@style/Theme.Widget.TextInputLayout.OutlinedBox</item>
<item name="android:itemTextAppearance">@style/TextAppearance.Widget.Menu</item>
<item name="swipeRefreshLayoutProgressSpinnerBackgroundColor">?attr/colorAccent</item>
<item name="circularProgressIndicatorStyle">@style/Theme.Widget.CircularProgressIndicator</item>
<item name="linearProgressIndicatorStyle">@style/Theme.Widget.LinearProgressIndicator</item>
<!-- Material Dialogs -->
<item name="md_background_color">?attr/colorSurface</item>
<item name="md_color_title">?attr/colorOnSurface</item>
<item name="md_color_content">?attr/colorOnSurface</item>
<item name="md_color_button_text">?attr/colorAccent</item>
<item name="md_button_casing">literal</item>
<item name="md_corner_radius">@dimen/dialog_radius</item>
<!-- Custom Attributes-->
<item name="colorLibrarySelection">?attr/colorAccent</item>
<item name="colorLibrarySelectionActive">@color/selectorColorLight</item>
<item name="colorFilterActive">@color/filterColorLight</item>
</style>
<!--==============-->
<!-- Light Themes -->
<!--==============-->
<!--== Light base ==-->
<style name="Base.Theme.Tachiyomi.Light" parent="Theme.Base">
<!-- Base background/text colors -->
<item name="android:statusBarColor">?attr/colorPrimary</item>
<item name="android:windowLightStatusBar">true</item>
<item name="background">@color/dialogLight</item>
</style>
<!--== Light theme ==-->
<style name="Theme.Tachiyomi.Light" parent="Base.Theme.Tachiyomi.Light" />
<!--== Light Blue theme ==-->
<style name="Theme.Tachiyomi.Light.Blue">
<!-- Theme colors -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorOnPrimary">@color/textColorPrimaryDark</item>
<item name="colorAccentOnPrimary">@color/textColorPrimaryDark</item>
<item name="colorPrimaryVariant">@color/colorPrimaryDark</item>
<item name="colorFilterActive">@color/filterColorDark</item>
<!-- Base background/text colors -->
<item name="background">@color/colorPrimary</item>
<!-- Ripples -->
<item name="rippleSecondaryColor">@color/md_white_1000_6</item>
<item name="rippleToolbarColor">@color/md_white_1000_12</item>
<!-- Themes -->
<item name="actionBarTheme">@style/Theme.Toolbar.Custom.PopupTheme</item>
<!-- Status/Navigation bar -->
<item name="android:windowLightStatusBar" tools:targetApi="m">false</item>
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>
</style>
<!--=============-->
<!-- Dark Themes -->
<!--=============-->
<!--== Dark base ==-->
<style name="Theme.Base.Dark" parent="Theme.MaterialComponents.NoActionBar">
<!-- Theme colors -->
<item name="colorPrimary">@color/colorDarkPrimary</item>
<item name="colorOnPrimary">@color/textColorPrimaryDark</item>
<item name="colorAccentOnPrimary">@color/colorAccentDark</item>
<item name="colorPrimaryVariant">@color/colorDarkPrimary</item>
<item name="colorSecondary">@color/colorAccentDark</item>
<item name="colorOnSecondary">@color/textColorPrimaryDark</item>
<item name="colorSurface">@color/dialogDark</item>
<item name="colorOnSurface">@color/textColorPrimaryDark</item>
<item name="colorOnBackground">@color/textColorPrimaryDark</item>
<item name="colorAccent">@color/colorAccentDark</item>
<!-- Handles RTL text -->
<item name="android:textAlignment">gravity</item>
<item name="android:textDirection">locale</item>
<!-- Base background/text colors -->
<item name="android:colorBackground">@color/backgroundDark</item>
<item name="android:textColorPrimary">@color/textColorPrimaryDark</item>
<item name="android:textColorSecondary">@color/textColorSecondaryDark</item>
<item name="android:textColorHint">@color/textColorHintDark</item>
<item name="android:textColorPrimaryInverse">@color/textColorPrimaryLight</item>
<item name="android:textColorSecondaryInverse">@color/textColorSecondaryLight</item>
<item name="android:textColorHintInverse">@color/textColorHintLight</item>
<item name="android:colorEdgeEffect">?attr/colorAccent</item>
<item name="background">@color/colorDarkPrimaryDark</item>
<item name="android:divider">@color/dividerDark</item>
<item name="android:listDivider">@drawable/line_divider</item>
<!-- Ripples -->
<item name="rippleColor">@color/rippleColorDark</item>
<item name="rippleSecondaryColor">@color/rippleSecondaryColorDark</item>
<item name="rippleToolbarColor">@color/rippleToolbarColorDark</item>
<!-- Themes -->
<item name="android:statusBarColor">?attr/colorPrimary</item>
<item name="android:navigationBarColor">?attr/colorPrimary</item>
<item name="android:navigationBarDividerColor" tools:targetApi="o_mr1">@null</item>
<item name="android:enforceNavigationBarContrast" tools:targetApi="Q">false</item>
<item name="windowActionModeOverlay">true</item>
<item name="elevationOverlayEnabled">false</item>
<item name="actionModeStyle">@style/Theme.ActionMode</item>
<item name="actionModeCloseButtonStyle">@style/Theme.ActionMode.CloseButton</item>
<item name="actionModeCloseDrawable">@drawable/ic_close_24dp</item>
<item name="actionBarTheme">@style/Theme.Toolbar.Custom.Dark</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.MaterialComponents</item>
<item name="toolbarNavigationButtonStyle">@style/Theme.Toolbar.Navigation</item>
<item name="preferenceTheme">@style/PreferenceThemeCustom</item>
<item name="dialogTheme">@style/Theme.AlertDialog.Dark</item>
<item name="materialAlertDialogTheme">@style/Theme.AlertDialog.Dark</item>
<item name="bottomSheetDialogTheme">@style/Theme.BottomSheet</item>
<item name="chipStyle">@style/Theme.Widget.Chip</item>
<item name="buttonStyle">@style/Theme.Widget.Button</item>
<item name="snackbarStyle">@style/Theme.Widget.Snackbar</item>
<item name="snackbarButtonStyle">@style/Theme.Widget.Button</item>
<item name="snackbarTextViewStyle">@style/Theme.Widget.Snackbar.TextView</item>
<item name="textAppearanceButton">@style/TextAppearance.Widget.Button</item>
<item name="textInputStyle">@style/Theme.Widget.TextInputLayout.OutlinedBox</item>
<item name="android:itemTextAppearance">@style/TextAppearance.Widget.Menu</item>
<item name="swipeRefreshLayoutProgressSpinnerBackgroundColor">?attr/colorAccent</item>
<item name="circularProgressIndicatorStyle">@style/Theme.Widget.CircularProgressIndicator</item>
<item name="linearProgressIndicatorStyle">@style/Theme.Widget.LinearProgressIndicator</item>
<!-- Material Dialogs -->
<item name="md_background_color">?attr/colorSurface</item>
<item name="md_color_title">?attr/colorOnSurface</item>
<item name="md_color_content">?attr/colorOnSurface</item>
<item name="md_color_button_text">?attr/colorAccent</item>
<item name="md_button_casing">literal</item>
<item name="md_corner_radius">@dimen/dialog_radius</item>
<!-- Custom Attributes-->
<item name="colorLibrarySelection">?attr/colorAccent</item>
<item name="colorLibrarySelectionActive">@color/selectorColorDark</item>
<item name="colorFilterActive">@color/filterColorDark</item>
</style>
<!--== Dark theme ==-->
<style name="Theme.Tachiyomi.Dark" parent="Theme.Base.Dark" />
<!--== Dark Blue theme ==-->
<style name="Theme.Tachiyomi.Dark.Blue">
<!-- Theme colors -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorAccentOnPrimary">@color/textColorPrimaryDark</item>
<item name="colorPrimaryVariant">@color/colorPrimary</item>
<!-- Base background/text colors -->
<item name="background">@color/colorPrimary</item>
<!-- Ripples -->
<item name="rippleSecondaryColor">@color/md_black_1000_6</item>
<item name="rippleToolbarColor">@color/md_black_1000_12</item>
</style>
<!--== Midnight Dusk theme ==-->
<style name="Theme.Tachiyomi.Dark.MidnightDusk" parent="Theme.Base.Dark">
<!-- Theme colors -->
<item name="colorPrimary">@color/dialogDusk</item>
<item name="colorOnPrimary">@color/textColorPrimaryDusk</item>
<item name="colorAccentOnPrimary">@color/colorAccentDusk</item>
<item name="colorPrimaryVariant">@color/dialogDusk</item>
<item name="colorSecondary">@color/colorAccentDusk</item>
<item name="colorOnSecondary">@color/textColorPrimaryDusk</item>
<item name="colorSurface">@color/dialogDusk</item>
<item name="colorOnSurface">@color/textColorPrimaryDusk</item>
<item name="colorOnBackground">@color/textColorPrimaryDusk</item>
<item name="colorAccent">@color/colorAccentDusk</item>
<!-- Base background/text colors -->
<item name="android:colorBackground">@color/backgroundDusk</item>
<item name="background">@color/backgroundDusk</item>
<!-- Ripples -->
<item name="rippleSecondaryColor">@color/rippleSecondaryColorDusk</item>
<!-- Custom Attributes -->
<item name="colorLibrarySelection">@color/selectorColorDark</item>
<item name="colorLibrarySelectionActive">@color/selectorColorDark</item>
</style>
<!--===============-->
<!-- AMOLED Themes -->
<!--===============-->
<!--== AMOLED base ==-->
<style name="Theme.Base.Amoled" parent="Theme.MaterialComponents.NoActionBar">
<!-- Theme colors -->
<item name="colorPrimary">@color/colorAmoledPrimary</item>
<item name="colorOnPrimary">@color/textColorPrimaryAmoled</item>
<item name="colorAccentOnPrimary">@color/colorAccentAmoled</item>
<item name="colorPrimaryVariant">@color/colorAmoledPrimary</item>
<item name="colorSecondary">@color/colorAccentAmoled</item>
<item name="colorOnSecondary">@color/textColorPrimaryAmoled</item>
<item name="colorSurface">@color/dialogAmoled</item>
<item name="colorOnSurface">@color/textColorPrimaryAmoled</item>
<item name="colorOnBackground">@color/textColorPrimaryAmoled</item>
<item name="colorAccent">@color/colorAccentAmoled</item>
<!-- Handles RTL text -->
<item name="android:textAlignment">gravity</item>
<item name="android:textDirection">locale</item>
<!-- Base background/text colors -->
<item name="android:colorBackground">@color/colorAmoledPrimary</item>
<item name="android:textColorPrimary">@color/textColorPrimaryAmoled</item>
<item name="android:textColorSecondary">@color/textColorSecondaryAmoled</item>
<item name="android:textColorHint">@color/textColorHintAmoled</item>
<item name="android:textColorPrimaryInverse">@color/textColorPrimaryLight</item>
<item name="android:textColorSecondaryInverse">@color/textColorSecondaryLight</item>
<item name="android:textColorHintInverse">@color/textColorHintLight</item>
<item name="android:colorEdgeEffect">?attr/colorAccent</item>
<item name="background">@color/colorAmoledPrimary</item>
<item name="android:divider">@color/dividerAmoled</item>
<item name="android:listDivider">@drawable/line_divider</item>
<!-- Ripples -->
<item name="rippleColor">@color/rippleColorAmoled</item>
<item name="rippleSecondaryColor">@color/rippleSecondaryColorAmoled</item>
<item name="rippleToolbarColor">@color/rippleToolbarColorAmoled</item>
<!-- Themes -->
<item name="android:statusBarColor">?attr/colorPrimary</item>
<item name="android:navigationBarDividerColor" tools:targetApi="o_mr1">@null</item>
<item name="android:enforceNavigationBarContrast" tools:targetApi="Q">false</item>
<item name="windowActionModeOverlay">true</item>
<item name="elevationOverlayEnabled">false</item>
<item name="actionModeStyle">@style/Theme.ActionMode</item>
<item name="actionModeCloseButtonStyle">@style/Theme.ActionMode.CloseButton</item>
<item name="actionModeCloseDrawable">@drawable/ic_close_24dp</item>
<item name="actionBarTheme">@style/Theme.Toolbar.Custom.Amoled</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.MaterialComponents</item>
<item name="toolbarNavigationButtonStyle">@style/Theme.Toolbar.Navigation</item>
<item name="preferenceTheme">@style/PreferenceThemeCustom</item>
<item name="dialogTheme">@style/Theme.AlertDialog.Amoled</item>
<item name="materialAlertDialogTheme">@style/Theme.AlertDialog.Amoled</item>
<item name="bottomSheetDialogTheme">@style/Theme.BottomSheet</item>
<item name="chipStyle">@style/Theme.Widget.Chip</item>
<item name="buttonStyle">@style/Theme.Widget.Button</item>
<item name="snackbarStyle">@style/Theme.Widget.Snackbar</item>
<item name="snackbarButtonStyle">@style/Theme.Widget.Button</item>
<item name="snackbarTextViewStyle">@style/Theme.Widget.Snackbar.TextView</item>
<item name="textAppearanceButton">@style/TextAppearance.Widget.Button</item>
<item name="textInputStyle">@style/Theme.Widget.TextInputLayout.OutlinedBox</item>
<item name="android:itemTextAppearance">@style/TextAppearance.Widget.Menu</item>
<item name="swipeRefreshLayoutProgressSpinnerBackgroundColor">?attr/colorAccent</item>
<item name="circularProgressIndicatorStyle">@style/Theme.Widget.CircularProgressIndicator</item>
<item name="linearProgressIndicatorStyle">@style/Theme.Widget.LinearProgressIndicator</item>
<!-- Material Dialogs -->
<item name="md_background_color">?attr/colorSurface</item>
<item name="md_color_title">?attr/colorOnSurface</item>
<item name="md_color_content">?attr/colorOnSurface</item>
<item name="md_color_button_text">?attr/colorAccent</item>
<item name="md_button_casing">literal</item>
<item name="md_corner_radius">@dimen/dialog_radius</item>
<!-- Custom Attributes-->
<item name="colorLibrarySelection">@color/selectorColorAmoled</item>
<item name="colorLibrarySelectionActive">@color/selectorColorAmoled</item>
<item name="colorFilterActive">@color/filterColorAmoled</item>
<!-- Some ROMs make black navbars white (e.g. OxygenOS) -->
<item name="android:navigationBarColor">#000001</item>
</style>
<!--== AMOLED theme ==-->
<style name="Theme.Tachiyomi.Amoled" parent="Theme.Base.Amoled" />
<!--== Hot Pink theme ==-->
<style name="Theme.Tachiyomi.Amoled.HotPink">
<!-- Theme colors -->
<item name="colorOnPrimary">@color/textColorPrimaryPink</item>
<item name="colorAccentOnPrimary">@color/colorAccentPink</item>
<item name="colorSecondary">@color/colorAccentPink</item>
<item name="colorOnSecondary">@color/textColorPrimaryPink</item>
<item name="colorOnSurface">@color/textColorPrimaryPink</item>
<item name="colorOnBackground">@color/textColorPrimaryPink</item>
<item name="colorAccent">@color/colorAccentPink</item>
<!-- Ripples -->
<item name="rippleSecondaryColor">@color/rippleSecondaryColorPink</item>
</style>
<!--===============-->
<!-- Reader Themes -->
<!--===============-->
<!--== Light Reader base ==-->
<style name="Theme.Base.Reader.Light" parent="Theme.Base">
<!-- Theme colors -->
<item name="colorPrimary">@color/readerColorDarkPrimary</item>
<item name="colorOnPrimary">@color/textColorPrimaryDark</item>
<item name="colorPrimaryVariant">@color/readerColorDarkPrimary</item>
<item name="colorSurface">@color/md_white_1000</item>
<!-- Base background/text colors -->
<item name="android:colorBackground">@color/md_white_1000</item>
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<item name="android:navigationBarColor">?attr/colorPrimaryVariant</item>
<!-- Themes -->
<item name="actionBarTheme">@style/Theme.Toolbar.Custom.Dark</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.MaterialComponents</item>
<item name="switchStyle">@style/Theme.Widget.BasicSwitch</item>
<item name="bottomSheetDialogTheme">@style/Theme.BottomSheet</item>
</style>
<!--== Light Reader ==-->
<style name="Theme.Reader.Light" parent="Theme.Base.Reader.Light" />
<!--== Dark Reader base ==-->
<style name="Theme.Base.Reader.Dark" parent="Theme.Base.Dark">
<!-- Theme colors -->
<item name="colorPrimary">@color/readerColorDarkPrimary</item>
<item name="colorOnPrimary">@color/textColorPrimaryDark</item>
<item name="colorPrimaryVariant">@color/readerColorDarkPrimary</item>
<item name="colorSurface">@color/md_black_1000</item>
<!-- Base background/text colors -->
<item name="android:colorBackground">@color/md_black_1000</item>
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<item name="android:navigationBarColor">?attr/colorPrimaryVariant</item>
<!-- Themes -->
<item name="actionBarTheme">@style/Theme.Toolbar.Custom.Dark</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.MaterialComponents</item>
<item name="switchStyle">@style/Theme.Widget.BasicSwitch</item>
<item name="bottomSheetDialogTheme">@style/Theme.BottomSheet</item>
</style>
<!--== Dark Reader ==-->
<style name="Theme.Reader.Dark" parent="Theme.Base.Reader.Dark" />
<!--== Dark Grey Reader ==-->
<style name="Theme.Reader.Dark.Grey" parent="Theme.Base.Reader.Dark">
<item name="android:colorBackground">@color/backgroundDark</item>
</style>
<!--===============-->
<!-- Launch Screen -->
<!--===============-->
<!--== Splash theme ==-->
<style name="Theme.Splash" parent="Theme.Tachiyomi.Light.Blue">
<!-- Theme colors -->
<item name="colorBackgroundSplash">@color/colorPrimary</item>
<!-- Base background/text colors -->
<item name="android:windowBackground">@drawable/splash_background</item>
<item name="android:statusBarColor">?attr/colorBackgroundSplash</item>
<item name="android:navigationBarColor">?attr/colorBackgroundSplash</item>
</style>
</resources>