pro版本添加自定义启动画面

This commit is contained in:
kunfei
2022-03-05 23:27:31 +08:00
parent 35418a1ab4
commit 45533b8f3c
16 changed files with 274 additions and 13 deletions
@@ -95,6 +95,10 @@ object PreferKey {
const val uploadRule = "uploadRule"
const val tocUiUseReplace = "tocUiUseReplace"
const val enableReadRecord = "enableReadRecord"
const val welcomeImage = "welcomeImagePath"
const val welcomeImageDark = "welcomeImagePathDark"
const val welcomeShowText = "welcomeShowText"
const val welcomeShowTextDark = "welcomeShowTextDark"
const val cPrimary = "colorPrimary"
const val cAccent = "colorAccent"
@@ -19,6 +19,7 @@ class ConfigActivity : BaseActivity<ActivityConfigBinding>() {
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()
}
}
@@ -6,5 +6,6 @@ object ConfigTag {
const val THEME_CONFIG = "themeConfig"
const val BACKUP_CONFIG = "backupConfig"
const val COVER_CONFIG = "coverConfig"
const val WELCOME_CONFIG = "welcomeConfig"
}
@@ -84,12 +84,17 @@ class CoverConfigFragment : BasePreferenceFragment(),
override fun onPreferenceTreeClick(preference: Preference): Boolean {
when (preference.key) {
PreferKey.defaultCover ->
if (getPrefString(PreferKey.defaultCover).isNullOrEmpty()) {
if (getPrefString(preference.key).isNullOrEmpty()) {
selectImage.launch(requestCodeCover)
} else {
context?.selector(items = arrayListOf("删除图片", "选择图片")) { _, i ->
context?.selector(
items = arrayListOf(
getString(R.string.delete),
getString(R.string.select_image)
)
) { _, i ->
if (i == 0) {
removePref(PreferKey.defaultCover)
removePref(preference.key)
BookCover.upDefaultCover()
} else {
selectImage.launch(requestCodeCover)
@@ -97,12 +102,17 @@ class CoverConfigFragment : BasePreferenceFragment(),
}
}
PreferKey.defaultCoverDark ->
if (getPrefString(PreferKey.defaultCoverDark).isNullOrEmpty()) {
if (getPrefString(preference.key).isNullOrEmpty()) {
selectImage.launch(requestCodeCoverDark)
} else {
context?.selector(items = arrayListOf("删除图片", "选择图片")) { _, i ->
context?.selector(
items = arrayListOf(
getString(R.string.delete),
getString(R.string.select_image)
)
) { _, i ->
if (i == 0) {
removePref(PreferKey.defaultCoverDark)
removePref(preference.key)
BookCover.upDefaultCover()
} else {
selectImage.launch(requestCodeCoverDark)
@@ -55,6 +55,9 @@ class ThemeConfigFragment : BasePreferenceFragment(),
if (Build.VERSION.SDK_INT < 26) {
preferenceScreen.removePreferenceRecursively(PreferKey.launcherIcon)
}
if (!AppConfig.isGooglePlay) {
preferenceScreen.removePreferenceRecursively("welcomeStyle")
}
upPreferenceSummary(PreferKey.bgImage, getPrefString(PreferKey.bgImage))
upPreferenceSummary(PreferKey.bgImageN, getPrefString(PreferKey.bgImageN))
upPreferenceSummary(PreferKey.barElevation, AppConfig.elevation.toString())
@@ -175,6 +178,8 @@ class ThemeConfigFragment : BasePreferenceFragment(),
"saveNightTheme" -> alertSaveTheme(key)
"coverConfig" -> (activity as? ConfigActivity)
?.replaceFragment<CoverConfigFragment>(ConfigTag.COVER_CONFIG)
"welcomeStyle" -> (activity as? ConfigActivity)
?.replaceFragment<CoverConfigFragment>(ConfigTag.WELCOME_CONFIG)
}
return super.onPreferenceTreeClick(preference)
}
@@ -0,0 +1,130 @@
package io.legado.app.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.legado.app.R
import io.legado.app.base.BasePreferenceFragment
import io.legado.app.constant.PreferKey
import io.legado.app.lib.dialogs.selector
import io.legado.app.lib.theme.primaryColor
import io.legado.app.model.BookCover
import io.legado.app.utils.*
class WelcomeConfigFragment : BasePreferenceFragment(),
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.defaultCover, uri)
requestWelcomeImageDark -> setCoverFromUri(PreferKey.defaultCoverDark, 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.cover_config)
listView.setEdgeEffectColor(primaryColor)
setHasOptionsMenu(true)
}
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.defaultCover,
PreferKey.defaultCoverDark -> 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) { name, bytes ->
var file = requireContext().externalFiles
file = FileUtils.createFileIfNotExist(file, "covers", name)
file.writeBytes(bytes)
putPrefString(preferenceKey, file.absolutePath)
BookCover.upDefaultCover()
}
}
}
@@ -66,6 +66,10 @@ class MyFragment : BaseFragment(R.layout.fragment_my_config) {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
putPrefBoolean(PreferKey.webService, WebService.isRun)
addPreferencesFromResource(R.xml.pref_main)
if (AppConfig.isGooglePlay) {
findPreference<PreferenceCategory>("aboutCategory")
?.removePreferenceRecursively("donate")
}
findPreference<SwitchPreference>("webService")?.onLongClick {
if (!WebService.isRun) {
return@onLongClick false
@@ -94,10 +98,6 @@ class MyFragment : BaseFragment(R.layout.fragment_my_config) {
true
}
}
if (AppConfig.isGooglePlay) {
findPreference<PreferenceCategory>("aboutCategory")
?.removePreferenceRecursively("donate")
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {