This commit is contained in:
Horis
2025-04-12 19:49:07 +08:00
parent ce46b3c868
commit e4b38aea56
2 changed files with 35 additions and 6 deletions
@@ -7,10 +7,14 @@ import android.graphics.drawable.Drawable
import androidx.annotation.Keep import androidx.annotation.Keep
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.RequestBuilder import com.bumptech.glide.RequestBuilder
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.engine.GlideException
import com.bumptech.glide.load.resource.bitmap.CenterCrop import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
import com.bumptech.glide.request.RequestListener
import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.request.target.Target
import com.bumptech.glide.request.target.Target.SIZE_ORIGINAL import com.bumptech.glide.request.target.Target.SIZE_ORIGINAL
import io.legado.app.R import io.legado.app.R
import io.legado.app.constant.PreferKey import io.legado.app.constant.PreferKey
@@ -81,6 +85,7 @@ object BookCover {
path: String?, path: String?,
loadOnlyWifi: Boolean = false, loadOnlyWifi: Boolean = false,
sourceOrigin: String? = null, sourceOrigin: String? = null,
onLoadFinish: (() -> Unit)? = null
): RequestBuilder<Drawable> { ): RequestBuilder<Drawable> {
if (AppConfig.useDefaultCover) { if (AppConfig.useDefaultCover) {
return ImageLoader.load(context, defaultDrawable) return ImageLoader.load(context, defaultDrawable)
@@ -90,9 +95,33 @@ object BookCover {
if (sourceOrigin != null) { if (sourceOrigin != null) {
options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin) options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
} }
return ImageLoader.load(context, path) var builder = ImageLoader.load(context, path)
.apply(options) .apply(options)
.placeholder(defaultDrawable) if (onLoadFinish != null) {
builder = builder.addListener(object : RequestListener<Drawable> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<Drawable?>,
isFirstResource: Boolean
): Boolean {
onLoadFinish.invoke()
return false
}
override fun onResourceReady(
resource: Drawable,
model: Any,
target: Target<Drawable?>?,
dataSource: DataSource,
isFirstResource: Boolean
): Boolean {
onLoadFinish.invoke()
return false
}
})
}
return builder.placeholder(defaultDrawable)
.error(defaultDrawable) .error(defaultDrawable)
.centerCrop() .centerCrop()
} }
@@ -189,10 +189,10 @@ class AudioPlayActivity :
} }
private fun upCover(path: String?) { private fun upCover(path: String?) {
BookCover.load(this, path, sourceOrigin = AudioPlay.bookSource?.bookSourceUrl) BookCover.load(this, path, sourceOrigin = AudioPlay.bookSource?.bookSourceUrl) {
.into(binding.ivCover) BookCover.loadBlur(this, path, sourceOrigin = AudioPlay.bookSource?.bookSourceUrl)
BookCover.loadBlur(this, path) .into(binding.ivBg)
.into(binding.ivBg) }.into(binding.ivCover)
} }
private fun playButton() { private fun playButton() {