From c7435cf475311896ad6cc2bfb01e3e5047e9f4e4 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Fri, 18 Apr 2025 22:23:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../book/manga/recyclerview/MangaAdapter.kt | 6 ++-- .../app/ui/book/manga/recyclerview/MangaVH.kt | 31 ++++++++++++++----- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt b/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt index 696e7ff0c..4ba1fc233 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaAdapter.kt @@ -89,8 +89,9 @@ class MangaAdapter(private val context: Context) : binding.retry.setOnClickListener { val item = mDiffer.currentList[layoutPosition] if (item is MangaPage) { + val isLastImage = item.imageCount > 0 && item.index == item.imageCount - 1 loadImageWithRetry( - item.mImageUrl, isHorizontal, item.imageCount == 1 + item.mImageUrl, isHorizontal, isLastImage ) } } @@ -98,7 +99,8 @@ class MangaAdapter(private val context: Context) : fun onBind(item: MangaPage) { setImageColorFilter() - loadImageWithRetry(item.mImageUrl, isHorizontal, item.imageCount == 1) + val isLastImage = item.imageCount > 0 && item.index == item.imageCount - 1 + loadImageWithRetry(item.mImageUrl, isHorizontal, isLastImage) } fun setImageColorFilter() { diff --git a/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaVH.kt b/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaVH.kt index 93c421fe7..96a305cbe 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaVH.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/recyclerview/MangaVH.kt @@ -34,6 +34,8 @@ open class MangaVH(val binding: VB, private val context: Conte protected lateinit var mFlProgress: FrameLayout protected var mRetry: Button? = null + private val minHeight = context.resources.displayMetrics.heightPixels * 2 / 3 + fun initComponent( loading: ProgressBar, image: AppCompatImageView, @@ -49,7 +51,7 @@ open class MangaVH(val binding: VB, private val context: Conte } @SuppressLint("CheckResult") - fun loadImageWithRetry(imageUrl: String, isHorizontal: Boolean, singleImage: Boolean) { + fun loadImageWithRetry(imageUrl: String, isHorizontal: Boolean, isLastImage: Boolean) { mFlProgress.isVisible = true mLoading.isVisible = true mRetry?.isGone = true @@ -92,14 +94,29 @@ open class MangaVH(val binding: VB, private val context: Conte mFlProgress.isGone = true if (!isHorizontal) { itemView.updateLayoutParams { - height = if (singleImage) { - ViewGroup.LayoutParams.MATCH_PARENT - } else { - ViewGroup.LayoutParams.WRAP_CONTENT - } + height = ViewGroup.LayoutParams.WRAP_CONTENT } - } else { mImage.updateLayoutParams { + gravity = Gravity.NO_GRAVITY + } + if (isLastImage) { + mImage.updateLayoutParams { + height = ViewGroup.LayoutParams.WRAP_CONTENT + } + itemView.minimumHeight = minHeight + } else { + mImage.updateLayoutParams { + height = ViewGroup.LayoutParams.MATCH_PARENT + } + itemView.minimumHeight = 0 + } + mImage.scaleType = ImageView.ScaleType.FIT_XY + } else { + itemView.updateLayoutParams { + height = ViewGroup.LayoutParams.MATCH_PARENT + } + mImage.updateLayoutParams { + height = ViewGroup.LayoutParams.MATCH_PARENT gravity = Gravity.CENTER } mImage.scaleType = ImageView.ScaleType.FIT_CENTER