From cffce34d1d0d474f25f7386b09aa06756ef62c37 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sun, 3 Oct 2021 16:23:44 +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 --- .../java/io/legado/app/base/BaseActivity.kt | 8 ++- .../main/java/io/legado/app/lib/theme/ATH.kt | 66 ------------------- .../app/ui/book/read/ReadBookBaseActivity.kt | 9 +-- .../io/legado/app/utils/ActivityExtensions.kt | 58 +++++++++++++++- 4 files changed, 65 insertions(+), 76 deletions(-) diff --git a/app/src/main/java/io/legado/app/base/BaseActivity.kt b/app/src/main/java/io/legado/app/base/BaseActivity.kt index 88941e805..d34030a54 100644 --- a/app/src/main/java/io/legado/app/base/BaseActivity.kt +++ b/app/src/main/java/io/legado/app/base/BaseActivity.kt @@ -160,11 +160,13 @@ abstract class BaseActivity( if (fullScreen && !isInMultiWindow) { ATH.fullScreen(this) } - ATH.setStatusBarColorAuto(this, fullScreen) + val isTransparentStatusBar = AppConfig.isTransparentStatusBar + val statusBarColor = ThemeStore.statusBarColor(this, isTransparentStatusBar) + setStatusBarColorAuto(statusBarColor, isTransparentStatusBar, fullScreen) if (toolBarTheme == Theme.Dark) { - ATH.setLightStatusBar(this, false) + setLightStatusBar(false) } else if (toolBarTheme == Theme.Light) { - ATH.setLightStatusBar(this, true) + setLightStatusBar(true) } upNavigationBarColor() } diff --git a/app/src/main/java/io/legado/app/lib/theme/ATH.kt b/app/src/main/java/io/legado/app/lib/theme/ATH.kt index b4074dbc3..a9d239aad 100644 --- a/app/src/main/java/io/legado/app/lib/theme/ATH.kt +++ b/app/src/main/java/io/legado/app/lib/theme/ATH.kt @@ -4,11 +4,9 @@ import android.annotation.SuppressLint import android.app.Activity import android.app.ActivityManager import android.content.Context -import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.os.Build import android.view.View -import android.view.WindowInsetsController import android.view.WindowManager import android.widget.EdgeEffect import android.widget.ScrollView @@ -16,11 +14,9 @@ import androidx.annotation.ColorInt import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.bottomnavigation.BottomNavigationView -import io.legado.app.R import io.legado.app.help.AppConfig import io.legado.app.utils.ColorUtils import io.legado.app.utils.dp -import io.legado.app.utils.getCompatColor import splitties.init.appCtx /** @@ -55,68 +51,6 @@ object ATH { ) } - fun setStatusBarColorAuto(activity: Activity, fullScreen: Boolean) { - val isTransparentStatusBar = AppConfig.isTransparentStatusBar - val statusBarColor = ThemeStore.statusBarColor(activity, isTransparentStatusBar) - setStatusBarColor(activity, statusBarColor, isTransparentStatusBar, fullScreen) - } - - fun setStatusBarColor( - activity: Activity, - color: Int, - isTransparentStatusBar: Boolean, - fullScreen: Boolean - ) { - if (fullScreen) { - if (isTransparentStatusBar) { - activity.window.statusBarColor = Color.TRANSPARENT - } else { - activity.window.statusBarColor = activity.getCompatColor(R.color.status_bar_bag) - } - } else { - activity.window.statusBarColor = color - } - setLightStatusBarAuto(activity, color) - } - - fun setLightStatusBarAuto(activity: Activity, bgColor: Int) { - setLightStatusBar(activity, ColorUtils.isColorLight(bgColor)) - } - - fun setLightStatusBar(activity: Activity, enabled: Boolean) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - activity.window.insetsController?.let { - if (enabled) { - it.setSystemBarsAppearance( - WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS, - WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS - ) - } else { - it.setSystemBarsAppearance( - 0, - WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS - ) - } - } - } - setLightStatusBarO(activity, enabled) - } - - @Suppress("DEPRECATION") - private fun setLightStatusBarO(activity: Activity, enabled: Boolean) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - val decorView = activity.window.decorView - val systemUiVisibility = decorView.systemUiVisibility - if (enabled) { - decorView.systemUiVisibility = - systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR - } else { - decorView.systemUiVisibility = - systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() - } - } - } - fun setTaskDescriptionColorAuto(activity: Activity) { setTaskDescriptionColor(activity, ThemeStore.primaryColor(activity)) } diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookBaseActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookBaseActivity.kt index c61217cdb..a116db5dc 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookBaseActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookBaseActivity.kt @@ -21,7 +21,6 @@ import io.legado.app.help.LocalConfig import io.legado.app.help.ReadBookConfig import io.legado.app.lib.dialogs.alert import io.legado.app.lib.dialogs.selector -import io.legado.app.lib.theme.ATH import io.legado.app.lib.theme.ThemeStore import io.legado.app.lib.theme.backgroundColor import io.legado.app.lib.theme.bottomBackground @@ -105,12 +104,10 @@ abstract class ReadBookBaseActivity : } upSystemUiVisibilityO(isInMultiWindow, toolBarHide) if (toolBarHide) { - ATH.setLightStatusBar(this, ReadBookConfig.durConfig.curStatusIconDark()) + setLightStatusBar(ReadBookConfig.durConfig.curStatusIconDark()) } else { - ATH.setLightStatusBarAuto( - this, - ThemeStore.statusBarColor(this, AppConfig.isTransparentStatusBar) - ) + val statusBarColor = ThemeStore.statusBarColor(this, AppConfig.isTransparentStatusBar) + setLightStatusBar(ColorUtils.isColorLight(statusBarColor)) } } diff --git a/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt b/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt index d4e0bb09f..dfe030683 100644 --- a/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt @@ -1,6 +1,7 @@ package io.legado.app.utils import android.app.Activity +import android.graphics.Color import android.os.Build import android.os.Bundle import android.util.DisplayMetrics @@ -9,6 +10,7 @@ import android.widget.FrameLayout import androidx.annotation.ColorInt import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.DialogFragment +import io.legado.app.R inline fun AppCompatActivity.showDialogFragment( arguments: Bundle.() -> Unit = {} @@ -40,7 +42,60 @@ val Activity.windowSize: DisplayMetrics return displayMetrics } -@Suppress("DEPRECATION") +/** + * 设置状态栏颜色 + */ +fun Activity.setStatusBarColorAuto( + @ColorInt color: Int, + isTransparent: Boolean, + fullScreen: Boolean +) { + val isLightBar = ColorUtils.isColorLight(color) + if (fullScreen) { + if (isTransparent) { + window.statusBarColor = Color.TRANSPARENT + } else { + window.statusBarColor = getCompatColor(R.color.status_bar_bag) + } + } else { + window.statusBarColor = color + } + setLightStatusBar(isLightBar) +} + +fun Activity.setLightStatusBar(isLightBar: Boolean) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + window.insetsController?.let { + if (isLightBar) { + it.setSystemBarsAppearance( + WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS, + WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS + ) + } else { + it.setSystemBarsAppearance( + 0, + WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS + ) + } + } + } + @Suppress("DEPRECATION") + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + val decorView = window.decorView + val systemUiVisibility = decorView.systemUiVisibility + if (isLightBar) { + decorView.systemUiVisibility = + systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + } else { + decorView.systemUiVisibility = + systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() + } + } +} + +/** + * 设置导航栏颜色 + */ fun Activity.setNavigationBarColorAuto(@ColorInt color: Int) { val isLightBor = ColorUtils.isColorLight(color) window.navigationBarColor = color @@ -59,6 +114,7 @@ fun Activity.setNavigationBarColorAuto(@ColorInt color: Int) { } } } + @Suppress("DEPRECATION") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val decorView = window.decorView var systemUiVisibility = decorView.systemUiVisibility