增加纯黑暗色模式,清理代码

This commit is contained in:
HapeLee committed 2025-09-10 19:32:52 +08:00
1 parent 7e97a6be05
commit 011aaa0bb9
34 files changed
+848 -459

No files matched your search

@@ -5,6 +5,7 @@ import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.res.ColorStateList
import android.content.res.Configuration
import android.graphics.Color
import android.graphics.RenderEffect
import android.graphics.Shader
@@ -533,7 +534,13 @@ class BookInfoActivity :
val surfaceTransition = ValueAnimator.ofArgb(surfaceFinalColor, colorSurface).apply {
duration = 400L
addUpdateListener { animation ->
val color = animation.animatedValue as Int
val nightModeFlags =
resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
val isDarkMode = nightModeFlags == Configuration.UI_MODE_NIGHT_YES
var color = animation.animatedValue as Int
if (AppConfig.pureBlack && isDarkMode) {
color = Color.BLACK
}
binding.cdInfo?.setCardBackgroundColor(color)
binding.llInfo.setBackgroundColor(color)
(binding.llCover.background as? GradientDrawable)?.colors =
@@ -5,9 +5,7 @@ import androidx.activity.viewModels
import androidx.fragment.app.Fragment
import io.legato.kazusa.R
import io.legato.kazusa.base.VMBaseActivity
import io.legato.kazusa.constant.EventBus
import io.legato.kazusa.databinding.ActivityConfigBinding
import io.legato.kazusa.utils.observeEvent
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
class ConfigActivity : VMBaseActivity<ActivityConfigBinding, ConfigViewModel>() {
@@ -23,7 +21,6 @@ class ConfigActivity : VMBaseActivity<ActivityConfigBinding, ConfigViewModel>()
ConfigTag.THEME_CONFIG -> replaceFragment<ThemeConfigFragment>(configTag)
ConfigTag.BACKUP_CONFIG -> replaceFragment<BackupConfigFragment>(configTag)
ConfigTag.COVER_CONFIG -> replaceFragment<CoverConfigFragment>(configTag)
ConfigTag.WELCOME_CONFIG -> replaceFragment<WelcomeConfigFragment>(configTag)
else -> finish()
}
}
@@ -136,6 +136,10 @@ class ThemeConfigFragment : PreferenceFragmentCompat(),
//recreateActivities()
}
PreferKey.pureBlack -> {
recreateActivities()
}
PreferKey.cPrimary,
PreferKey.cAccent,
PreferKey.cBackground,
@@ -193,10 +197,6 @@ class ThemeConfigFragment : PreferenceFragmentCompat(),
"coverConfig" -> startActivity<ConfigActivity> {
putExtra("configTag", ConfigTag.COVER_CONFIG)
}
"welcomeStyle" -> startActivity<ConfigActivity> {
putExtra("configTag", ConfigTag.WELCOME_CONFIG)
}
}
return super.onPreferenceTreeClick(preference)
}
@@ -1,140 +0,0 @@
package io.legato.kazusa.ui.config
import android.annotation.SuppressLint
import android.content.SharedPreferences
import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.preference.Preference
import io.legato.kazusa.R
import io.legato.kazusa.constant.PreferKey
import io.legato.kazusa.lib.dialogs.selector
import io.legato.kazusa.lib.prefs.fragment.PreferenceFragment
//import io.legado.app.lib.theme.primaryColor
import io.legato.kazusa.model.BookCover
import io.legato.kazusa.utils.*
import splitties.init.appCtx
import java.io.FileOutputStream
class WelcomeConfigFragment : PreferenceFragment(),
SharedPreferences.OnSharedPreferenceChangeListener {
private val requestWelcomeImage = 221
private val requestWelcomeImageDark = 222
private val selectImage = registerForActivityResult(SelectImageContract()) {
it.uri?.let { uri ->
when (it.requestCode) {
requestWelcomeImage -> setCoverFromUri(PreferKey.welcomeImage, uri)
requestWelcomeImageDark -> setCoverFromUri(PreferKey.welcomeImageDark, uri)
}
}
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_config_welcome)
upPreferenceSummary(PreferKey.welcomeImage, getPrefString(PreferKey.welcomeImage))
upPreferenceSummary(PreferKey.welcomeImageDark, getPrefString(PreferKey.welcomeImageDark))
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
activity?.setTitle(R.string.welcome_style)
//listView.setEdgeEffectColor(primaryColor)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
preferenceManager.sharedPreferences?.registerOnSharedPreferenceChangeListener(this)
}
override fun onDestroy() {
super.onDestroy()
preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(this)
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
sharedPreferences ?: return
when (key) {
PreferKey.welcomeImage,
PreferKey.welcomeImageDark -> {
upPreferenceSummary(key, getPrefString(key))
}
}
}
@SuppressLint("PrivateResource")
override fun onPreferenceTreeClick(preference: Preference): Boolean {
when (preference.key) {
PreferKey.welcomeImage ->
if (getPrefString(preference.key).isNullOrEmpty()) {
selectImage.launch(requestWelcomeImage)
} else {
context?.selector(
items = arrayListOf(
getString(R.string.delete),
getString(R.string.select_image)
)
) { _, i ->
if (i == 0) {
removePref(preference.key)
BookCover.upDefaultCover()
} else {
selectImage.launch(requestWelcomeImage)
}
}
}
PreferKey.welcomeImageDark ->
if (getPrefString(preference.key).isNullOrEmpty()) {
selectImage.launch(requestWelcomeImageDark)
} else {
context?.selector(
items = arrayListOf(
getString(R.string.delete),
getString(R.string.select_image)
)
) { _, i ->
if (i == 0) {
removePref(preference.key)
BookCover.upDefaultCover()
} else {
selectImage.launch(requestWelcomeImageDark)
}
}
}
}
return super.onPreferenceTreeClick(preference)
}
private fun upPreferenceSummary(preferenceKey: String, value: String?) {
val preference = findPreference<Preference>(preferenceKey) ?: return
when (preferenceKey) {
PreferKey.welcomeImage,
PreferKey.welcomeImageDark -> preference.summary = if (value.isNullOrBlank()) {
getString(R.string.select_image)
} else {
value
}
else -> preference.summary = value
}
}
private fun setCoverFromUri(preferenceKey: String, uri: Uri) {
readUri(uri) { fileDoc, inputStream ->
kotlin.runCatching {
var file = requireContext().externalFiles
val suffix = fileDoc.name.substringAfterLast(".")
val fileName = uri.inputStream(requireContext()).getOrThrow().use {
MD5Utils.md5Encode(it) + ".$suffix"
}
file = FileUtils.createFileIfNotExist(file, "covers", fileName)
FileOutputStream(file).use {
inputStream.copyTo(it)
}
putPrefString(preferenceKey, file.absolutePath)
}.onFailure {
appCtx.toastOnUi(it.localizedMessage)
}
}
}
}
@@ -107,7 +107,7 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (AppConfig.isFirstLaunch) {
if (LocalConfig.isFirstOpenApp) {
startActivity<WelcomeActivity>()
finish()
return
@@ -99,7 +99,7 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
private var enableRefresh = true
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
setSupportToolbar(binding.titleBar.toolbar)
setSupportToolbar(binding.topBar)
initRecyclerView()
initBookGroupData()
initAllBooksData()
@@ -182,7 +182,7 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
private fun initBooksData() {
if (groupId == BookGroup.Companion.IdRoot) {
if (isAdded) {
binding.titleBar.title = getString(R.string.bookshelf)
binding.topBar.title = getString(R.string.bookshelf)
binding.refreshLayout.isEnabled = true
enableRefresh = true
}
@@ -190,7 +190,7 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
bookGroups.firstOrNull {
groupId == it.groupId
}?.let {
binding.titleBar.title = it.groupName
binding.topBar.title = it.groupName
binding.refreshLayout.isEnabled = it.enableRefresh
enableRefresh = it.enableRefresh
}
@@ -7,7 +7,6 @@ import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import io.legato.kazusa.base.BaseActivity
import io.legato.kazusa.databinding.ActivityWelcomeBinding
import io.legato.kazusa.help.config.AppConfig
import io.legato.kazusa.help.config.LocalConfig
import io.legato.kazusa.ui.main.MainActivity
import io.legato.kazusa.utils.startActivity
@@ -96,7 +95,6 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
}
private fun finishSetup() {
AppConfig.isFirstLaunch = false
startActivity<MainActivity>()
finish()
}