Skip to content

Commit 35cbb1f

Browse files
committed
优化
1 parent a2509b2 commit 35cbb1f

File tree

3 files changed

+26
-15
lines changed

3 files changed

+26
-15
lines changed

app/src/main/java/io/legado/app/model/BookCover.kt

+21-5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.content.Context
55
import android.graphics.drawable.BitmapDrawable
66
import android.graphics.drawable.Drawable
77
import androidx.annotation.Keep
8+
import com.bumptech.glide.Glide
89
import com.bumptech.glide.RequestBuilder
910
import com.bumptech.glide.load.engine.DiskCacheStrategy
1011
import com.bumptech.glide.load.resource.bitmap.CenterCrop
@@ -29,6 +30,7 @@ import io.legado.app.utils.fromJsonObject
2930
import io.legado.app.utils.getPrefBoolean
3031
import io.legado.app.utils.getPrefString
3132
import splitties.init.appCtx
33+
import java.io.File
3234

3335
@Keep
3436
object BookCover {
@@ -102,20 +104,34 @@ object BookCover {
102104
path: String?,
103105
loadOnlyWifi: Boolean = false,
104106
sourceOrigin: String? = null,
105-
manga: Boolean = false,
106-
useDefaultCover: Drawable? = null,
107107
): RequestBuilder<Drawable> {
108108
var options = RequestOptions().set(OkHttpModelLoader.loadOnlyWifiOption, loadOnlyWifi)
109-
.set(OkHttpModelLoader.mangaOption, manga)
109+
.set(OkHttpModelLoader.mangaOption, true)
110110
if (sourceOrigin != null) {
111111
options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
112112
}
113113
return ImageLoader.load(context, path)
114114
.apply(options)
115115
.override(context.resources.displayMetrics.widthPixels, SIZE_ORIGINAL)
116-
.placeholder(useDefaultCover)
117-
.error(useDefaultCover)
118116
.diskCacheStrategy(DiskCacheStrategy.ALL)
117+
.skipMemoryCache(true)
118+
}
119+
120+
fun preloadManga(
121+
context: Context,
122+
path: String?,
123+
loadOnlyWifi: Boolean = false,
124+
sourceOrigin: String? = null,
125+
): RequestBuilder<File?> {
126+
var options = RequestOptions().set(OkHttpModelLoader.loadOnlyWifiOption, loadOnlyWifi)
127+
.set(OkHttpModelLoader.mangaOption, true)
128+
if (sourceOrigin != null) {
129+
options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
130+
}
131+
return Glide.with(context)
132+
.downloadOnly()
133+
.apply(options)
134+
.load(path)
119135
}
120136

121137
/**

app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt

+5-6
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,17 @@ import androidx.viewbinding.ViewBinding
1717
import com.bumptech.glide.Glide
1818
import com.bumptech.glide.ListPreloader.PreloadModelProvider
1919
import com.bumptech.glide.RequestBuilder
20-
import io.legado.app.R
2120
import io.legado.app.base.adapter.ItemViewHolder
2221
import io.legado.app.base.adapter.RecyclerAdapter.Companion.TYPE_FOOTER_VIEW
2322
import io.legado.app.databinding.BookComicLoadingRvBinding
2423
import io.legado.app.databinding.BookComicRvBinding
2524
import io.legado.app.help.glide.progress.ProgressManager
25+
import io.legado.app.help.globalExecutor
2626
import io.legado.app.model.BookCover
2727
import io.legado.app.model.ReadManga
2828
import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
2929
import io.legado.app.ui.book.manga.entities.MangaPage
3030
import io.legado.app.ui.book.manga.entities.ReaderLoading
31-
import io.legado.app.utils.getCompatDrawable
3231

3332

3433
class MangaAdapter(private val context: Context) :
@@ -171,7 +170,9 @@ class MangaAdapter(private val context: Context) :
171170
vh.itemView.updateLayoutParams<ViewGroup.LayoutParams> {
172171
height = MATCH_PARENT
173172
}
174-
Glide.with(context).clear(vh.binding.image)
173+
globalExecutor.execute {
174+
Glide.with(context).clear(vh.binding.image)
175+
}
175176
if (vh.binding.image.tag is String) {
176177
ProgressManager.removeListener(vh.binding.image.tag as String)
177178
}
@@ -223,12 +224,10 @@ class MangaAdapter(private val context: Context) :
223224

224225
override fun getPreloadRequestBuilder(item: Any): RequestBuilder<*>? {
225226
if (item is MangaPage) {
226-
return BookCover.loadManga(
227+
return BookCover.preloadManga(
227228
context,
228229
item.mImageUrl,
229230
sourceOrigin = ReadManga.book?.origin,
230-
manga = true,
231-
useDefaultCover = context.getCompatDrawable(R.color.book_ant_10)
232231
)
233232
}
234233
return null

app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaVH.kt

-4
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,9 @@ import com.bumptech.glide.load.DataSource
1919
import com.bumptech.glide.load.engine.GlideException
2020
import com.bumptech.glide.request.RequestListener
2121
import com.bumptech.glide.request.target.Target
22-
import io.legado.app.R
2322
import io.legado.app.help.glide.progress.ProgressManager
2423
import io.legado.app.model.BookCover
2524
import io.legado.app.model.ReadManga
26-
import io.legado.app.utils.getCompatDrawable
2725
import io.legado.app.utils.printOnDebug
2826

2927
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
6664
context,
6765
imageUrl,
6866
sourceOrigin = ReadManga.book?.origin,
69-
manga = true,
70-
useDefaultCover = context.getCompatDrawable(R.color.book_ant_10)
7167
).addListener(object : RequestListener<Drawable> {
7268
override fun onLoadFailed(
7369
e: GlideException?,

0 commit comments

Comments
 (0)