From b7c50dff05d7d17c5ce6bb57e05fc229544fe0c3 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Wed, 11 Jun 2025 03:39:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 12 +- .../io/legato/kazusa/base/BaseActivity.kt | 13 +- .../io/legato/kazusa/help/LauncherIconHelp.kt | 114 +++++++++++++----- .../kazusa/lib/prefs/ThemeCardPreference.kt | 4 +- .../ui/book/toc/rule/TxtTocRuleDialog.kt | 1 - .../io/legato/kazusa/ui/main/MainActivity.kt | 3 +- app/src/main/res/layout/activity_main.xml | 1 - app/src/main/res/layout/dialog_toc_regex.xml | 1 - .../main/res/layout/dialog_toc_regex_edit.xml | 3 +- app/src/main/res/values-zh/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/themes.xml | 7 ++ 12 files changed, 108 insertions(+), 53 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c3b3e387d..7c1eb163e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,7 +33,7 @@ tools:ignore="AllowBackup,GoogleAppIndexingWarning,UnusedAttribute"> ( return super.onCreateView(parent, name, context, attrs) } - @SuppressLint("ObsoleteSdkInt") + override fun onCreate(savedInstanceState: Bundle?) { applyTheme() window.decorView.disableAutoFill() @@ -84,10 +84,8 @@ abstract class BaseActivity( //setupSystemBar() setContentView(binding.root) upBackgroundImage() - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - findViewById(R.id.title_bar) - //?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen) - } + findViewById(R.id.title_bar) + //?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen) onBackPressedDispatcher.addCallback(this) { finish() } @@ -137,7 +135,10 @@ abstract class BaseActivity( open fun applyTheme() { when (getPrefString("app_theme", "0")) { - "0" -> DynamicColors.applyToActivitiesIfAvailable(application) + "0" -> + { + DynamicColors.applyToActivitiesIfAvailable(application) + } "1" -> setTheme(R.style.Theme_Base_GR) "2" -> setTheme(R.style.Theme_Base_Lemon) "3" -> setTheme(R.style.Theme_Base_WH) diff --git a/app/src/main/java/io/legato/kazusa/help/LauncherIconHelp.kt b/app/src/main/java/io/legato/kazusa/help/LauncherIconHelp.kt index 14c9b213a..e76464f16 100644 --- a/app/src/main/java/io/legato/kazusa/help/LauncherIconHelp.kt +++ b/app/src/main/java/io/legato/kazusa/help/LauncherIconHelp.kt @@ -15,12 +15,18 @@ import splitties.init.appCtx object LauncherIconHelp { private val packageManager: PackageManager = appCtx.packageManager private val componentNames = arrayListOf( - ComponentName(appCtx, Launcher1::class.java.name), - ComponentName(appCtx, Launcher2::class.java.name), - ComponentName(appCtx, Launcher3::class.java.name), - ComponentName(appCtx, Launcher4::class.java.name), - ComponentName(appCtx, Launcher5::class.java.name), - ComponentName(appCtx, Launcher6::class.java.name) + ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher1"), + ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher2"), + ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher3"), + ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher4"), + ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher5"), + ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher6") + ) + + // 主Activity的ComponentName + private val mainActivity = ComponentName( + appCtx.packageName, + "${appCtx.packageName}.ui.main.MainActivity" ) fun changeIcon(icon: String?) { @@ -29,37 +35,79 @@ object LauncherIconHelp { appCtx.toastOnUi(R.string.change_icon_error) return } - var hasEnabled = false - componentNames.forEach { - if (icon.equals(it.className.substringAfterLast("."), true)) { - hasEnabled = true - //启用 + + try { + // 首先禁用主Activity的启动器intent + disableMainActivityLauncher() + + // 然后处理所有别名 + var matched = false + componentNames.forEach { + val aliasName = it.className.substringAfterLast(".") + if (icon.equals(aliasName, ignoreCase = true)) { + matched = true + packageManager.setComponentEnabledSetting( + it, + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP + ) + } else { + packageManager.setComponentEnabledSetting( + it, + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP + ) + } + } + + if (!matched) { + enableMainActivityLauncher() + } + + // 通知用户图标已更改 + appCtx.toastOnUi(R.string.change_icon_success) + + } catch (e: Exception) { + e.printStackTrace() + appCtx.toastOnUi(R.string.change_icon_error) + } + } + + // 禁用主Activity的启动器功能 + private fun disableMainActivityLauncher() { + try { + // 获取当前组件状态 + val state = packageManager.getComponentEnabledSetting(mainActivity) + + // 如果已经禁用,不需要再次操作 + if (state != PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { packageManager.setComponentEnabledSetting( - it, - PackageManager.COMPONENT_ENABLED_STATE_ENABLED, - PackageManager.DONT_KILL_APP - ) - } else { - //禁用 - packageManager.setComponentEnabledSetting( - it, + mainActivity, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP ) } - } - if (hasEnabled) { - packageManager.setComponentEnabledSetting( - ComponentName(appCtx, WelcomeActivity::class.java.name), - PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP - ) - } else { - packageManager.setComponentEnabledSetting( - ComponentName(appCtx, WelcomeActivity::class.java.name), - PackageManager.COMPONENT_ENABLED_STATE_ENABLED, - PackageManager.DONT_KILL_APP - ) + } catch (e: Exception) { + e.printStackTrace() } } -} \ No newline at end of file + + // 启用主Activity的启动器功能 + private fun enableMainActivityLauncher() { + try { + // 获取当前组件状态 + val state = packageManager.getComponentEnabledSetting(mainActivity) + + // 如果已经启用,不需要再次操作 + if (state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { + packageManager.setComponentEnabledSetting( + mainActivity, + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP + ) + } + } catch (e: Exception) { + e.printStackTrace() + } + } +} diff --git a/app/src/main/java/io/legato/kazusa/lib/prefs/ThemeCardPreference.kt b/app/src/main/java/io/legato/kazusa/lib/prefs/ThemeCardPreference.kt index 10601c09b..5451297e3 100644 --- a/app/src/main/java/io/legato/kazusa/lib/prefs/ThemeCardPreference.kt +++ b/app/src/main/java/io/legato/kazusa/lib/prefs/ThemeCardPreference.kt @@ -88,7 +88,7 @@ class ThemeCardPreference(context: Context, attrs: AttributeSet) : Preference(co } private val themeResIdMap = mapOf( - "0" to R.style.Base_AppTheme, + "0" to R.style.Theme_Base_Dycolors, "1" to R.style.Theme_Base_GR, "2" to R.style.Theme_Base_Lemon, "3" to R.style.Theme_Base_WH, @@ -106,7 +106,7 @@ class ThemeCardPreference(context: Context, attrs: AttributeSet) : Preference(co com.google.android.material.R.attr.colorPrimary, com.google.android.material.R.attr.colorOnSurfaceVariant, com.google.android.material.R.attr.colorSurface, - com.google.android.material.R.attr.colorPrimaryFixed, + com.google.android.material.R.attr.colorSecondaryContainer, ) val ta = themedContext.obtainStyledAttributes(attrs) diff --git a/app/src/main/java/io/legato/kazusa/ui/book/toc/rule/TxtTocRuleDialog.kt b/app/src/main/java/io/legato/kazusa/ui/book/toc/rule/TxtTocRuleDialog.kt index dff94f748..4b76561c3 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/toc/rule/TxtTocRuleDialog.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/toc/rule/TxtTocRuleDialog.kt @@ -83,7 +83,6 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex), override fun onStart() { super.onStart() - setLayout(0.9f, 0.8f) } override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { 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 ff59e2e00..6d93101ba 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 @@ -57,6 +57,7 @@ import splitties.views.bottomPadding import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine import androidx.core.view.get +import io.legato.kazusa.ui.welcome.WelcomeActivity /** * 主界面 @@ -413,7 +414,7 @@ class MainActivity : VMBaseActivity(), } } - @Suppress("DEPRECATION") + private inner class TabFragmentPageAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0057799ee..8cce966bb 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -19,5 +19,4 @@ android:layout_height="wrap_content" app:menu="@menu/main_bnv" /> - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_toc_regex.xml b/app/src/main/res/layout/dialog_toc_regex.xml index 5fc1252d5..c3b4f1456 100644 --- a/app/src/main/res/layout/dialog_toc_regex.xml +++ b/app/src/main/res/layout/dialog_toc_regex.xml @@ -36,7 +36,6 @@ android:layout_marginRight="16dp" android:padding="12dp" android:text="@string/cancel" - android:textColor="@color/secondaryText" tools:ignore="RtlHardcoded" /> + android:layout_height="wrap_content"> 滤镜 隐藏漫画列表标题 刷新发现 + 图标已修改 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8580346ea..0dc4c8db9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1220,4 +1220,5 @@ 刷新发现 未分组 动态取色 + 图标已修改 diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index ff63cf76f..4cfe47d61 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -30,6 +30,10 @@ @drawable/popup_background @style/AppTheme.AlertDialog + +