This commit is contained in:
Horis
2025-04-18 22:23:57 +08:00
parent 1fadda9a23
commit c7435cf475
2 changed files with 28 additions and 9 deletions
@@ -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() {
@@ -34,6 +34,8 @@ open class MangaVH<VB : ViewBinding>(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<VB : ViewBinding>(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<VB : ViewBinding>(val binding: VB, private val context: Conte
mFlProgress.isGone = true
if (!isHorizontal) {
itemView.updateLayoutParams<ViewGroup.LayoutParams> {
height = if (singleImage) {
ViewGroup.LayoutParams.MATCH_PARENT
} else {
ViewGroup.LayoutParams.WRAP_CONTENT
}
height = ViewGroup.LayoutParams.WRAP_CONTENT
}
} else {
mImage.updateLayoutParams<FrameLayout.LayoutParams> {
gravity = Gravity.NO_GRAVITY
}
if (isLastImage) {
mImage.updateLayoutParams<FrameLayout.LayoutParams> {
height = ViewGroup.LayoutParams.WRAP_CONTENT
}
itemView.minimumHeight = minHeight
} else {
mImage.updateLayoutParams<FrameLayout.LayoutParams> {
height = ViewGroup.LayoutParams.MATCH_PARENT
}
itemView.minimumHeight = 0
}
mImage.scaleType = ImageView.ScaleType.FIT_XY
} else {
itemView.updateLayoutParams<ViewGroup.LayoutParams> {
height = ViewGroup.LayoutParams.MATCH_PARENT
}
mImage.updateLayoutParams<FrameLayout.LayoutParams> {
height = ViewGroup.LayoutParams.MATCH_PARENT
gravity = Gravity.CENTER
}
mImage.scaleType = ImageView.ScaleType.FIT_CENTER