|
@@ -2,21 +2,20 @@ package io.legado.app.ui.association
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.annotation.SuppressLint
|
|
|
import android.graphics.Bitmap
|
|
import android.graphics.Bitmap
|
|
|
-import android.graphics.drawable.Drawable
|
|
|
|
|
import android.os.Bundle
|
|
import android.os.Bundle
|
|
|
import android.view.MenuItem
|
|
import android.view.MenuItem
|
|
|
import android.view.View
|
|
import android.view.View
|
|
|
import android.view.ViewGroup
|
|
import android.view.ViewGroup
|
|
|
import androidx.appcompat.widget.Toolbar
|
|
import androidx.appcompat.widget.Toolbar
|
|
|
-import androidx.core.graphics.drawable.toBitmap
|
|
|
|
|
|
|
+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.request.RequestListener
|
|
|
import com.bumptech.glide.request.RequestOptions
|
|
import com.bumptech.glide.request.RequestOptions
|
|
|
-import com.bumptech.glide.request.target.CustomTarget
|
|
|
|
|
-import com.bumptech.glide.request.transition.Transition
|
|
|
|
|
|
|
+import com.bumptech.glide.request.target.Target
|
|
|
import io.legado.app.R
|
|
import io.legado.app.R
|
|
|
import io.legado.app.base.BaseDialogFragment
|
|
import io.legado.app.base.BaseDialogFragment
|
|
|
import io.legado.app.databinding.DialogVerificationCodeViewBinding
|
|
import io.legado.app.databinding.DialogVerificationCodeViewBinding
|
|
|
-import io.legado.app.help.CacheManager
|
|
|
|
|
import io.legado.app.help.glide.ImageLoader
|
|
import io.legado.app.help.glide.ImageLoader
|
|
|
import io.legado.app.help.glide.OkHttpModelLoader
|
|
import io.legado.app.help.glide.OkHttpModelLoader
|
|
|
import io.legado.app.help.source.SourceVerificationHelp
|
|
import io.legado.app.help.source.SourceVerificationHelp
|
|
@@ -79,37 +78,37 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
|
|
|
|
|
|
|
|
@SuppressLint("CheckResult")
|
|
@SuppressLint("CheckResult")
|
|
|
private fun loadImage(url: String, sourceUrl: String?) {
|
|
private fun loadImage(url: String, sourceUrl: String?) {
|
|
|
- ImageProvider.bitmapLruCache.remove(url)
|
|
|
|
|
|
|
+ ImageProvider.remove(url)
|
|
|
ImageLoader.loadBitmap(requireContext(), url).apply {
|
|
ImageLoader.loadBitmap(requireContext(), url).apply {
|
|
|
sourceUrl?.let {
|
|
sourceUrl?.let {
|
|
|
- apply(
|
|
|
|
|
- RequestOptions().set(OkHttpModelLoader.sourceOriginOption, it)
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ apply(RequestOptions().set(OkHttpModelLoader.sourceOriginOption, it))
|
|
|
}
|
|
}
|
|
|
}.error(R.drawable.image_loading_error)
|
|
}.error(R.drawable.image_loading_error)
|
|
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
|
|
.skipMemoryCache(true)
|
|
.skipMemoryCache(true)
|
|
|
- .into(object : CustomTarget<Bitmap>() {
|
|
|
|
|
- override fun onLoadFailed(errorDrawable: Drawable?) {
|
|
|
|
|
- errorDrawable?.toBitmap()?.let {
|
|
|
|
|
- onResourceReady(it, null)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ .listener(object : RequestListener<Bitmap> {
|
|
|
|
|
+ override fun onLoadFailed(
|
|
|
|
|
+ e: GlideException?,
|
|
|
|
|
+ model: Any?,
|
|
|
|
|
+ target: Target<Bitmap?>,
|
|
|
|
|
+ isFirstResource: Boolean
|
|
|
|
|
+ ): Boolean {
|
|
|
|
|
+ return false
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onResourceReady(
|
|
override fun onResourceReady(
|
|
|
resource: Bitmap,
|
|
resource: Bitmap,
|
|
|
- transition: Transition<in Bitmap>?
|
|
|
|
|
- ) {
|
|
|
|
|
- view ?: return
|
|
|
|
|
- val bitmap = resource.copy(resource.config ?: Bitmap.Config.ARGB_8888, true)
|
|
|
|
|
- ImageProvider.bitmapLruCache.put(url, bitmap)
|
|
|
|
|
- binding.verificationCodeImageView.setImageBitmap(bitmap)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun onLoadCleared(placeholder: Drawable?) {
|
|
|
|
|
- // do nothing
|
|
|
|
|
|
|
+ model: Any,
|
|
|
|
|
+ target: Target<Bitmap?>?,
|
|
|
|
|
+ dataSource: DataSource,
|
|
|
|
|
+ isFirstResource: Boolean
|
|
|
|
|
+ ): Boolean {
|
|
|
|
|
+ val bitmap = resource.copy(resource.config!!, true)
|
|
|
|
|
+ ImageProvider.put(url, bitmap) // 传给 PhotoDialog
|
|
|
|
|
+ return false
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
|
|
+ .into(binding.verificationCodeImageView)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@SuppressLint("InflateParams")
|
|
@SuppressLint("InflateParams")
|