From cd4caed170e786d9227079cf1fb1dedece2338f8 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Wed, 18 Jun 2025 13:41:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=87=AA=E5=8A=A8=E6=B7=B1?= =?UTF-8?q?=E6=B5=85=E8=89=B2=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 +-- app/src/main/java/io/legato/kazusa/App.kt | 20 +++++------ .../legato/kazusa/base/AppContextWrapper.kt | 34 ++++++++++++------- .../io/legato/kazusa/base/BaseActivity.kt | 31 ++++++++--------- .../io/legato/kazusa/base/VMBaseActivity.kt | 2 +- .../java/io/legato/kazusa/constant/Theme.kt | 2 +- .../legato/kazusa/help/config/ThemeConfig.kt | 1 - .../io/legato/kazusa/ui/main/MainActivity.kt | 4 +-- app/src/main/res/values/themes.xml | 10 ------ 9 files changed, 50 insertions(+), 58 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7c1eb163e..1874401e3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -114,7 +114,7 @@ android:name=".ui.main.MainActivity" android:alwaysRetainTaskState="true" android:enableOnBackInvokedCallback="true" - android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|uiMode" + android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout" android:exported="true"> @@ -507,7 +507,7 @@ android:icon="@drawable/ic_web_service_noti" android:label="legado Web Service" android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" - tools:targetApi="24"> + > diff --git a/app/src/main/java/io/legato/kazusa/App.kt b/app/src/main/java/io/legato/kazusa/App.kt index 79b1265a2..352efe1cb 100644 --- a/app/src/main/java/io/legato/kazusa/App.kt +++ b/app/src/main/java/io/legato/kazusa/App.kt @@ -123,18 +123,14 @@ class App : Application() { } } - override fun attachBaseContext(base: Context) { - super.attachBaseContext(AppContextWrapper.wrap(base)) - } - - override fun onConfigurationChanged(newConfig: Configuration) { - super.onConfigurationChanged(newConfig) - val diff = newConfig.diff(oldConfig) - if ((diff and ActivityInfo.CONFIG_UI_MODE) != 0) { - applyDayNight(this) - } - oldConfig = Configuration(newConfig) - } +// override fun onConfigurationChanged(newConfig: Configuration) { +// super.onConfigurationChanged(newConfig) +// val diff = newConfig.diff(oldConfig) +// if ((diff and ActivityInfo.CONFIG_UI_MODE) != 0) { +// applyDayNight(this) +// } +// oldConfig = Configuration(newConfig) +// } /** * 尝试在安装了GMS的设备上(GMS或者MicroG)使用GMS内置的Conscrypt diff --git a/app/src/main/java/io/legato/kazusa/base/AppContextWrapper.kt b/app/src/main/java/io/legato/kazusa/base/AppContextWrapper.kt index 18ca074ae..412ba6527 100644 --- a/app/src/main/java/io/legato/kazusa/base/AppContextWrapper.kt +++ b/app/src/main/java/io/legato/kazusa/base/AppContextWrapper.kt @@ -1,6 +1,7 @@ package io.legato.kazusa.base import android.annotation.SuppressLint +import android.app.Activity import android.content.Context import android.content.res.Configuration import android.content.res.Resources @@ -16,22 +17,31 @@ import java.util.* @Suppress("unused") object AppContextWrapper { - @SuppressLint("ObsoleteSdkInt") fun wrap(context: Context): Context { - val resources: Resources = context.resources - val configuration: Configuration = resources.configuration + val newConfig = Configuration(context.resources.configuration) val targetLocale = getSetLocale(context) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - configuration.setLocale(targetLocale) - configuration.setLocales(LocaleList(targetLocale)) - } else { - @Suppress("DEPRECATION") - configuration.locale = targetLocale - } - configuration.fontScale = getFontScale(context) - return context.createConfigurationContext(configuration) + newConfig.setLocale(targetLocale) + newConfig.setLocales(LocaleList(targetLocale)) + newConfig.fontScale = getFontScale(context) + return context.createConfigurationContext(newConfig) } + fun applyLocaleAndFont(activity: Activity) { + val config = activity.resources.configuration + val locale = getSetLocale(activity) + val fontScale = getFontScale(activity) + + val newConfig = Configuration(config) + newConfig.setLocale(locale) + newConfig.setLocales(LocaleList(locale)) + newConfig.fontScale = fontScale + + @Suppress("DEPRECATION") + activity.resources.updateConfiguration(newConfig, activity.resources.displayMetrics) + } + + + fun getFontScale(context: Context): Float { var fontScale = context.getPrefInt(PreferKey.fontScale) / 10f if (fontScale !in 0.8f..1.6f) { diff --git a/app/src/main/java/io/legato/kazusa/base/BaseActivity.kt b/app/src/main/java/io/legato/kazusa/base/BaseActivity.kt index d26847237..26e9d82e0 100644 --- a/app/src/main/java/io/legato/kazusa/base/BaseActivity.kt +++ b/app/src/main/java/io/legato/kazusa/base/BaseActivity.kt @@ -7,6 +7,7 @@ import android.graphics.drawable.BitmapDrawable import android.os.Build import android.os.Bundle import android.util.AttributeSet +import android.util.Log import android.view.Menu import android.view.MenuItem import android.view.MotionEvent @@ -41,7 +42,6 @@ import androidx.core.graphics.drawable.toDrawable abstract class BaseActivity( val fullScreen: Boolean = true, - private val theme: Theme = Theme.Auto, private val toolBarTheme: Theme = Theme.Auto, private val transparent: Boolean = false, private val imageBg: Boolean = true @@ -59,9 +59,6 @@ abstract class BaseActivity( } } - override fun attachBaseContext(newBase: Context) { - super.attachBaseContext(AppContextWrapper.wrap(newBase)) - } override fun onCreateView( parent: View?, @@ -69,18 +66,19 @@ abstract class BaseActivity( context: Context, attrs: AttributeSet ): View? { - if (AppConst.menuViewNames.contains(name) && parent?.parent is FrameLayout) { - //(parent.parent as View).setBackgroundColor(backgroundColor) - } +// if (AppConst.menuViewNames.contains(name) && parent?.parent is FrameLayout) { +// (parent.parent as View).setBackgroundColor(backgroundColor) +// } return super.onCreateView(parent, name, context, attrs) } override fun onCreate(savedInstanceState: Bundle?) { - applyTheme() + initTheme() window.decorView.disableAutoFill() - + AppContextWrapper.applyLocaleAndFont(this) super.onCreate(savedInstanceState) + //setupSystemBar() setContentView(binding.root) upBackgroundImage() @@ -100,12 +98,13 @@ abstract class BaseActivity( //setupSystemBar() } - override fun onConfigurationChanged(newConfig: Configuration) { - super.onConfigurationChanged(newConfig) - //findViewById(R.id.title_bar) - //?.onMultiWindowModeChanged(isInMultiWindow, fullScreen) - //setupSystemBar() - } +// override fun onConfigurationChanged(newConfig: Configuration) { +// super.onConfigurationChanged(newConfig) +// //findViewById(R.id.title_bar) +// //Log.d("Config", "uiMode = ${newConfig.uiMode}") +// //?.onMultiWindowModeChanged(isInMultiWindow, fullScreen) +// //setupSystemBar() +// } abstract fun onActivityCreated(savedInstanceState: Bundle?) @@ -132,7 +131,7 @@ abstract class BaseActivity( open fun onCompatOptionsItemSelected(item: MenuItem) = super.onOptionsItemSelected(item) - open fun applyTheme() { + open fun initTheme() { when (getPrefString("app_theme", "0")) { "0" -> { diff --git a/app/src/main/java/io/legato/kazusa/base/VMBaseActivity.kt b/app/src/main/java/io/legato/kazusa/base/VMBaseActivity.kt index b4be8a8c1..20b58fa0a 100644 --- a/app/src/main/java/io/legato/kazusa/base/VMBaseActivity.kt +++ b/app/src/main/java/io/legato/kazusa/base/VMBaseActivity.kt @@ -10,7 +10,7 @@ abstract class VMBaseActivity( toolBarTheme: Theme = Theme.Auto, transparent: Boolean = false, imageBg: Boolean = true -) : BaseActivity(fullScreen, theme, toolBarTheme, transparent, imageBg) { +) : BaseActivity(fullScreen, toolBarTheme, transparent, imageBg) { protected abstract val viewModel: VM diff --git a/app/src/main/java/io/legato/kazusa/constant/Theme.kt b/app/src/main/java/io/legato/kazusa/constant/Theme.kt index 09c2036bf..31adc48e3 100644 --- a/app/src/main/java/io/legato/kazusa/constant/Theme.kt +++ b/app/src/main/java/io/legato/kazusa/constant/Theme.kt @@ -1,5 +1,5 @@ package io.legato.kazusa.constant enum class Theme { - Dark, Light, Auto, Transparent, EInk, GR; + Dark, Light, Auto; } \ No newline at end of file diff --git a/app/src/main/java/io/legato/kazusa/help/config/ThemeConfig.kt b/app/src/main/java/io/legato/kazusa/help/config/ThemeConfig.kt index f17930a22..49775e3f8 100644 --- a/app/src/main/java/io/legato/kazusa/help/config/ThemeConfig.kt +++ b/app/src/main/java/io/legato/kazusa/help/config/ThemeConfig.kt @@ -57,7 +57,6 @@ object ThemeConfig { } fun applyDayNightInit(context: Context) { - //applyTheme(context) initNightMode() } diff --git a/app/src/main/java/io/legato/kazusa/ui/main/MainActivity.kt b/app/src/main/java/io/legato/kazusa/ui/main/MainActivity.kt index 6d93101ba..c378fe14b 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/MainActivity.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/MainActivity.kt @@ -342,12 +342,10 @@ class MainActivity : VMBaseActivity(), } override fun observeLiveBus() { + super.observeLiveBus() viewModel.onUpBooksLiveData.observe(this) { onUpBooksBadgeView.setBadgeCount(it) } - observeEvent(EventBus.RECREATE) { - recreate() - } observeEvent(EventBus.NOTIFY_MAIN) { binding.apply { upBottomMenu() diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index db4f01604..309c682d4 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -2,16 +2,6 @@ //**************************************************************Theme******************************************************************************// - - - - - - - - - -