mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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?,
|
||||
|
||||
Reference in New Issue
Block a user