This commit is contained in:
Horis
2025-03-23 13:50:13 +08:00
parent a2509b2fc5
commit 35cbb1fab8
3 changed files with 26 additions and 15 deletions

View File

@@ -5,6 +5,7 @@ import android.content.Context
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import androidx.annotation.Keep
import com.bumptech.glide.Glide
import com.bumptech.glide.RequestBuilder
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.CenterCrop
@@ -29,6 +30,7 @@ import io.legado.app.utils.fromJsonObject
import io.legado.app.utils.getPrefBoolean
import io.legado.app.utils.getPrefString
import splitties.init.appCtx
import java.io.File
@Keep
object BookCover {
@@ -102,20 +104,34 @@ object BookCover {
path: String?,
loadOnlyWifi: Boolean = false,
sourceOrigin: String? = null,
manga: Boolean = false,
useDefaultCover: Drawable? = null,
): RequestBuilder<Drawable> {
var options = RequestOptions().set(OkHttpModelLoader.loadOnlyWifiOption, loadOnlyWifi)
.set(OkHttpModelLoader.mangaOption, manga)
.set(OkHttpModelLoader.mangaOption, true)
if (sourceOrigin != null) {
options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
}
return ImageLoader.load(context, path)
.apply(options)
.override(context.resources.displayMetrics.widthPixels, SIZE_ORIGINAL)
.placeholder(useDefaultCover)
.error(useDefaultCover)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.skipMemoryCache(true)
}
fun preloadManga(
context: Context,
path: String?,
loadOnlyWifi: Boolean = false,
sourceOrigin: String? = null,
): RequestBuilder<File?> {
var options = RequestOptions().set(OkHttpModelLoader.loadOnlyWifiOption, loadOnlyWifi)
.set(OkHttpModelLoader.mangaOption, true)
if (sourceOrigin != null) {
options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
}
return Glide.with(context)
.downloadOnly()
.apply(options)
.load(path)
}
/**

View File

@@ -17,18 +17,17 @@ import androidx.viewbinding.ViewBinding
import com.bumptech.glide.Glide
import com.bumptech.glide.ListPreloader.PreloadModelProvider
import com.bumptech.glide.RequestBuilder
import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.RecyclerAdapter.Companion.TYPE_FOOTER_VIEW
import io.legado.app.databinding.BookComicLoadingRvBinding
import io.legado.app.databinding.BookComicRvBinding
import io.legado.app.help.glide.progress.ProgressManager
import io.legado.app.help.globalExecutor
import io.legado.app.model.BookCover
import io.legado.app.model.ReadManga
import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
import io.legado.app.ui.book.manga.entities.MangaPage
import io.legado.app.ui.book.manga.entities.ReaderLoading
import io.legado.app.utils.getCompatDrawable
class MangaAdapter(private val context: Context) :
@@ -171,7 +170,9 @@ class MangaAdapter(private val context: Context) :
vh.itemView.updateLayoutParams<ViewGroup.LayoutParams> {
height = MATCH_PARENT
}
Glide.with(context).clear(vh.binding.image)
globalExecutor.execute {
Glide.with(context).clear(vh.binding.image)
}
if (vh.binding.image.tag is String) {
ProgressManager.removeListener(vh.binding.image.tag as String)
}
@@ -223,12 +224,10 @@ class MangaAdapter(private val context: Context) :
override fun getPreloadRequestBuilder(item: Any): RequestBuilder<*>? {
if (item is MangaPage) {
return BookCover.loadManga(
return BookCover.preloadManga(
context,
item.mImageUrl,
sourceOrigin = ReadManga.book?.origin,
manga = true,
useDefaultCover = context.getCompatDrawable(R.color.book_ant_10)
)
}
return null

View File

@@ -19,11 +19,9 @@ import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.GlideException
import com.bumptech.glide.request.RequestListener
import com.bumptech.glide.request.target.Target
import io.legado.app.R
import io.legado.app.help.glide.progress.ProgressManager
import io.legado.app.model.BookCover
import io.legado.app.model.ReadManga
import io.legado.app.utils.getCompatDrawable
import io.legado.app.utils.printOnDebug
open class MangaVH<VB : ViewBinding>(val binding: VB, private val context: Context) :
@@ -66,8 +64,6 @@ open class MangaVH<VB : ViewBinding>(val binding: VB, private val context: Conte
context,
imageUrl,
sourceOrigin = ReadManga.book?.origin,
manga = true,
useDefaultCover = context.getCompatDrawable(R.color.book_ant_10)
).addListener(object : RequestListener<Drawable> {
override fun onLoadFailed(
e: GlideException?,