Horis hai 1 ano
pai
achega
f794e692fc

+ 21 - 5
app/src/main/java/io/legado/app/model/BookCover.kt

@@ -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)
     }
 
     /**

+ 5 - 6
app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt

@@ -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

+ 0 - 4
app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaVH.kt

@@ -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?,