mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
Some checks are pending
Test Build / prepare (push) Waiting to run
Test Build / build (app, release) (push) Blocked by required conditions
Test Build / build (app, releaseA) (push) Blocked by required conditions
Test Build / prerelease (push) Blocked by required conditions
Test Build / lanzou (push) Blocked by required conditions
Test Build / test_Branch (push) Blocked by required conditions
Test Build / telegram (push) Blocked by required conditions
Some checks are pending
Test Build / prepare (push) Waiting to run
Test Build / build (app, release) (push) Blocked by required conditions
Test Build / build (app, releaseA) (push) Blocked by required conditions
Test Build / prerelease (push) Blocked by required conditions
Test Build / lanzou (push) Blocked by required conditions
Test Build / test_Branch (push) Blocked by required conditions
Test Build / telegram (push) Blocked by required conditions
This commit is contained in:
@@ -20,7 +20,6 @@ import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.help.globalExecutor
|
||||
import io.legado.app.model.webBook.WebBook
|
||||
import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
|
||||
import io.legado.app.ui.book.manga.entities.MangaChapter
|
||||
import io.legado.app.ui.book.manga.entities.MangaContent
|
||||
import io.legado.app.ui.book.manga.entities.MangaContentData
|
||||
@@ -589,6 +588,5 @@ object ReadManga : CoroutineScope by MainScope() {
|
||||
fun loadFail(msg: String)
|
||||
fun sureNewProgress(progress: BookProgress)
|
||||
fun showLoading()
|
||||
fun colorFilter(config: MangaColorFilterConfig)
|
||||
}
|
||||
}
|
||||
@@ -71,7 +71,8 @@ import kotlinx.coroutines.withContext
|
||||
import java.text.DecimalFormat
|
||||
|
||||
class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewModel>(),
|
||||
ReadManga.Callback, ChangeBookSourceDialog.CallBack, MangaMenu.CallBack {
|
||||
ReadManga.Callback, ChangeBookSourceDialog.CallBack, MangaMenu.CallBack,
|
||||
MangaColorFilterDialog.Callback {
|
||||
|
||||
private val mLayoutManager by lazy {
|
||||
LinearLayoutManager(
|
||||
@@ -428,11 +429,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
}
|
||||
}
|
||||
|
||||
override fun colorFilter(config: MangaColorFilterConfig) {
|
||||
mAdapter.setMangaImageColorFilter(config)
|
||||
updateWindowBrightness(config.l)
|
||||
}
|
||||
|
||||
override val oldBook: Book?
|
||||
get() = ReadManga.book
|
||||
|
||||
@@ -445,6 +441,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateColorFilter(config: MangaColorFilterConfig) {
|
||||
mAdapter.setMangaImageColorFilter(config)
|
||||
updateWindowBrightness(config.l)
|
||||
}
|
||||
|
||||
@SuppressLint("StringFormatMatches")
|
||||
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
package io.legado.app.ui.book.manga.config
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import io.legado.app.utils.GSON
|
||||
|
||||
@Parcelize
|
||||
data class MangaColorFilterConfig(
|
||||
var r: Int = 0,
|
||||
var g: Int = 0,
|
||||
var b: Int = 0,
|
||||
var a: Int = 0,
|
||||
var l: Int = 0
|
||||
) : Parcelable
|
||||
) {
|
||||
fun toJson(): String {
|
||||
if (r == 0 && g == 0 && b == 0 && a == 0 && l == 0) {
|
||||
return ""
|
||||
}
|
||||
return GSON.toJson(this)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.databinding.DialogMangaColorFilterBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.model.ReadManga
|
||||
import io.legado.app.utils.GSON
|
||||
import io.legado.app.utils.fromJsonObject
|
||||
import io.legado.app.utils.setLayout
|
||||
@@ -20,6 +19,7 @@ class MangaColorFilterDialog : BaseDialogFragment(R.layout.dialog_manga_color_fi
|
||||
private val mConfig =
|
||||
GSON.fromJsonObject<MangaColorFilterConfig>(AppConfig.mangaColorFilter).getOrNull()
|
||||
?: MangaColorFilterConfig()
|
||||
private val callback get() = activity as? Callback
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
@@ -46,30 +46,34 @@ class MangaColorFilterDialog : BaseDialogFragment(R.layout.dialog_manga_color_fi
|
||||
binding.run {
|
||||
dsbBrightness.onChanged = {
|
||||
mConfig.l = it
|
||||
ReadManga.mCallback?.colorFilter(mConfig)
|
||||
callback?.updateColorFilter(mConfig)
|
||||
}
|
||||
dsbR.onChanged = {
|
||||
mConfig.r = it
|
||||
ReadManga.mCallback?.colorFilter(mConfig)
|
||||
callback?.updateColorFilter(mConfig)
|
||||
}
|
||||
dsbG.onChanged = {
|
||||
mConfig.g = it
|
||||
ReadManga.mCallback?.colorFilter(mConfig)
|
||||
callback?.updateColorFilter(mConfig)
|
||||
}
|
||||
dsbB.onChanged = {
|
||||
mConfig.b = it
|
||||
ReadManga.mCallback?.colorFilter(mConfig)
|
||||
callback?.updateColorFilter(mConfig)
|
||||
}
|
||||
dsbA.onChanged = {
|
||||
mConfig.a = it
|
||||
ReadManga.mCallback?.colorFilter(mConfig)
|
||||
callback?.updateColorFilter(mConfig)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
AppConfig.mangaColorFilter = GSON.toJson(mConfig)
|
||||
AppConfig.mangaColorFilter = mConfig.toJson()
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
fun updateColorFilter(config: MangaColorFilterConfig)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -105,23 +105,21 @@ class MangaAdapter(private val context: Context) :
|
||||
}
|
||||
|
||||
fun setImageColorFilter() {
|
||||
binding.image.run {
|
||||
require(
|
||||
mConfig.r in 0..255 &&
|
||||
mConfig.g in 0..255 &&
|
||||
mConfig.b in 0..255 &&
|
||||
mConfig.a in 0..255
|
||||
) {
|
||||
"ARGB values must be between 0-255"
|
||||
}
|
||||
val matrix = floatArrayOf(
|
||||
(255 - mConfig.r) / 255f, 0f, 0f, 0f, 0f,
|
||||
0f, (255 - mConfig.g) / 255f, 0f, 0f, 0f,
|
||||
0f, 0f, (255 - mConfig.b) / 255f, 0f, 0f,
|
||||
0f, 0f, 0f, (255 - mConfig.a) / 255f, 0f
|
||||
)
|
||||
colorFilter = ColorMatrixColorFilter(ColorMatrix(matrix))
|
||||
require(
|
||||
mConfig.r in 0..255 &&
|
||||
mConfig.g in 0..255 &&
|
||||
mConfig.b in 0..255 &&
|
||||
mConfig.a in 0..255
|
||||
) {
|
||||
"ARGB values must be between 0-255"
|
||||
}
|
||||
val matrix = floatArrayOf(
|
||||
(255 - mConfig.r) / 255f, 0f, 0f, 0f, 0f,
|
||||
0f, (255 - mConfig.g) / 255f, 0f, 0f, 0f,
|
||||
0f, 0f, (255 - mConfig.b) / 255f, 0f, 0f,
|
||||
0f, 0f, 0f, (255 - mConfig.a) / 255f, 0f
|
||||
)
|
||||
binding.image.colorFilter = ColorMatrixColorFilter(ColorMatrix(matrix))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user