From 1c4c922e20f4f68f45bc1cb9ac2963aa57de634d Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 22 Oct 2020 09:43:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/App.kt | 72 ++----------------- .../java/io/legado/app/help/ThemeConfig.kt | 60 ++++++++++++++++ .../app/ui/config/ThemeConfigFragment.kt | 2 +- 3 files changed, 65 insertions(+), 69 deletions(-) diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt index d6bdb24f5..02dd32dae 100644 --- a/app/src/main/java/io/legado/app/App.kt +++ b/app/src/main/java/io/legado/app/App.kt @@ -4,7 +4,6 @@ import android.app.NotificationChannel import android.app.NotificationManager import android.content.Context import android.content.res.Configuration -import android.graphics.Color import android.os.Build import android.provider.Settings import androidx.annotation.RequiresApi @@ -15,14 +14,10 @@ import io.legado.app.constant.AppConst.channelIdDownload import io.legado.app.constant.AppConst.channelIdReadAloud import io.legado.app.constant.AppConst.channelIdWeb import io.legado.app.constant.EventBus -import io.legado.app.constant.PreferKey import io.legado.app.data.AppDatabase -import io.legado.app.help.ActivityHelp -import io.legado.app.help.AppConfig -import io.legado.app.help.CrashHandler -import io.legado.app.help.ReadBookConfig -import io.legado.app.lib.theme.ThemeStore -import io.legado.app.utils.* +import io.legado.app.help.* +import io.legado.app.utils.LanguageUtils +import io.legado.app.utils.postEvent @Suppress("DEPRECATION") class App : MultiDexApplication() { @@ -71,68 +66,9 @@ class App : MultiDexApplication() { } } - /** - * 更新主题 - */ - fun applyTheme() { - when { - AppConfig.isEInkMode -> { - ThemeStore.editTheme(this) - .coloredNavigationBar(true) - .primaryColor(Color.WHITE) - .accentColor(Color.BLACK) - .backgroundColor(Color.WHITE) - .bottomBackground(Color.WHITE) - .apply() - } - AppConfig.isNightTheme -> { - val primary = - getPrefInt(PreferKey.cNPrimary, getCompatColor(R.color.md_blue_grey_600)) - val accent = - getPrefInt(PreferKey.cNAccent, getCompatColor(R.color.md_deep_orange_800)) - var background = - getPrefInt(PreferKey.cNBackground, getCompatColor(R.color.md_grey_900)) - if (ColorUtils.isColorLight(background)) { - background = getCompatColor(R.color.md_grey_900) - putPrefInt(PreferKey.cNBackground, background) - } - val bBackground = - getPrefInt(PreferKey.cNBBackground, getCompatColor(R.color.md_grey_850)) - ThemeStore.editTheme(this) - .coloredNavigationBar(true) - .primaryColor(ColorUtils.withAlpha(primary, 1f)) - .accentColor(ColorUtils.withAlpha(accent, 1f)) - .backgroundColor(ColorUtils.withAlpha(background, 1f)) - .bottomBackground(ColorUtils.withAlpha(bBackground, 1f)) - .apply() - } - else -> { - val primary = - getPrefInt(PreferKey.cPrimary, getCompatColor(R.color.md_brown_500)) - val accent = - getPrefInt(PreferKey.cAccent, getCompatColor(R.color.md_red_600)) - var background = - getPrefInt(PreferKey.cBackground, getCompatColor(R.color.md_grey_100)) - if (!ColorUtils.isColorLight(background)) { - background = getCompatColor(R.color.md_grey_100) - putPrefInt(PreferKey.cBackground, background) - } - val bBackground = - getPrefInt(PreferKey.cBBackground, getCompatColor(R.color.md_grey_200)) - ThemeStore.editTheme(this) - .coloredNavigationBar(true) - .primaryColor(ColorUtils.withAlpha(primary, 1f)) - .accentColor(ColorUtils.withAlpha(accent, 1f)) - .backgroundColor(ColorUtils.withAlpha(background, 1f)) - .bottomBackground(ColorUtils.withAlpha(bBackground, 1f)) - .apply() - } - } - } - fun applyDayNight() { ReadBookConfig.upBg() - applyTheme() + ThemeConfig.applyTheme(this) initNightMode() postEvent(EventBus.RECREATE, "") } diff --git a/app/src/main/java/io/legado/app/help/ThemeConfig.kt b/app/src/main/java/io/legado/app/help/ThemeConfig.kt index 44948e17c..74a42a2ed 100644 --- a/app/src/main/java/io/legado/app/help/ThemeConfig.kt +++ b/app/src/main/java/io/legado/app/help/ThemeConfig.kt @@ -7,6 +7,7 @@ import io.legado.app.App import io.legado.app.R import io.legado.app.constant.EventBus import io.legado.app.constant.PreferKey +import io.legado.app.lib.theme.ThemeStore import io.legado.app.utils.* import java.io.File @@ -137,6 +138,65 @@ object ThemeConfig { addConfig(config) } + /** + * 更新主题 + */ + fun applyTheme(context: Context) = with(context) { + when { + AppConfig.isEInkMode -> { + ThemeStore.editTheme(this) + .coloredNavigationBar(true) + .primaryColor(Color.WHITE) + .accentColor(Color.BLACK) + .backgroundColor(Color.WHITE) + .bottomBackground(Color.WHITE) + .apply() + } + AppConfig.isNightTheme -> { + val primary = + getPrefInt(PreferKey.cNPrimary, getCompatColor(R.color.md_blue_grey_600)) + val accent = + getPrefInt(PreferKey.cNAccent, getCompatColor(R.color.md_deep_orange_800)) + var background = + getPrefInt(PreferKey.cNBackground, getCompatColor(R.color.md_grey_900)) + if (ColorUtils.isColorLight(background)) { + background = getCompatColor(R.color.md_grey_900) + putPrefInt(PreferKey.cNBackground, background) + } + val bBackground = + getPrefInt(PreferKey.cNBBackground, getCompatColor(R.color.md_grey_850)) + ThemeStore.editTheme(this) + .coloredNavigationBar(true) + .primaryColor(ColorUtils.withAlpha(primary, 1f)) + .accentColor(ColorUtils.withAlpha(accent, 1f)) + .backgroundColor(ColorUtils.withAlpha(background, 1f)) + .bottomBackground(ColorUtils.withAlpha(bBackground, 1f)) + .apply() + } + else -> { + val primary = + getPrefInt(PreferKey.cPrimary, getCompatColor(R.color.md_brown_500)) + val accent = + getPrefInt(PreferKey.cAccent, getCompatColor(R.color.md_red_600)) + var background = + getPrefInt(PreferKey.cBackground, getCompatColor(R.color.md_grey_100)) + if (!ColorUtils.isColorLight(background)) { + background = getCompatColor(R.color.md_grey_100) + putPrefInt(PreferKey.cBackground, background) + } + val bBackground = + getPrefInt(PreferKey.cBBackground, getCompatColor(R.color.md_grey_200)) + ThemeStore.editTheme(this) + .coloredNavigationBar(true) + .primaryColor(ColorUtils.withAlpha(primary, 1f)) + .accentColor(ColorUtils.withAlpha(accent, 1f)) + .backgroundColor(ColorUtils.withAlpha(background, 1f)) + .bottomBackground(ColorUtils.withAlpha(bBackground, 1f)) + .apply() + } + } + } + @Keep class Config( var themeName: String, diff --git a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt index 4b76ebc3e..0912da631 100644 --- a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt @@ -203,7 +203,7 @@ class ThemeConfigFragment : BasePreferenceFragment(), private fun upTheme(isNightTheme: Boolean) { if (AppConfig.isNightTheme == isNightTheme) { listView.post { - App.INSTANCE.applyTheme() + ThemeConfig.applyTheme(requireContext()) recreateActivities() } }