diff --git a/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt b/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt index 51467deb4..f85bc2dca 100644 --- a/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt +++ b/app/src/main/java/com/hippo/ehviewer/coil/Extensions.kt @@ -2,6 +2,7 @@ package com.hippo.ehviewer.coil import android.content.Context import coil.request.ImageRequest +import coil.size.Size import com.hippo.ehviewer.client.getPreviewThumbKey fun ImageRequest.Builder.ehUrl(url: String) = apply { @@ -9,6 +10,7 @@ fun ImageRequest.Builder.ehUrl(url: String) = apply { data(url) memoryCacheKey(key) diskCacheKey(key) + size(Size.ORIGINAL) } inline fun Context.imageRequest( diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt index 2716b1c27..29014f7db 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt @@ -150,7 +150,7 @@ import com.hippo.ehviewer.ui.CommonOperations import com.hippo.ehviewer.ui.GalleryInfoBottomSheet import com.hippo.ehviewer.ui.MainActivity import com.hippo.ehviewer.ui.scene.GalleryListScene.Companion.toStartArgs -import com.hippo.ehviewer.ui.widget.EhAsyncThumb +import com.hippo.ehviewer.ui.widget.EhAsyncPreview import com.hippo.ehviewer.ui.widget.GalleryDetailHeaderCard import com.hippo.ehviewer.ui.widget.GalleryDetailRating import com.hippo.ehviewer.widget.GalleryRatingBar @@ -596,8 +596,8 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener { .fillMaxWidth() .aspectRatio(0.6666667F) ) { - EhAsyncThumb( - model = it.imageUrl, + EhAsyncPreview( + model = it, modifier = Modifier.fillMaxSize() ) } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/widget/EhAsyncThumb.kt b/app/src/main/java/com/hippo/ehviewer/ui/widget/EhAsyncThumb.kt index 586640220..50c48df91 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/widget/EhAsyncThumb.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/widget/EhAsyncThumb.kt @@ -2,11 +2,17 @@ package com.hippo.ehviewer.ui.widget import androidx.compose.runtime.Composable import androidx.compose.runtime.ReadOnlyComposable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import coil.compose.AsyncImage +import coil.compose.AsyncImagePainter import coil.request.ImageRequest +import com.hippo.ehviewer.client.data.GalleryPreview import com.hippo.ehviewer.coil.ehUrl @Composable @@ -28,3 +34,26 @@ fun EhAsyncThumb( modifier = modifier, contentScale = contentScale, ) + +@Composable +fun EhAsyncPreview( + model: GalleryPreview, + modifier: Modifier = Modifier, +) { + var contentScale by remember { mutableStateOf(ContentScale.Fit) } + AsyncImage( + model = requestOf(model.imageUrl), + contentDescription = "", + modifier = modifier, + onState = { + if (it is AsyncImagePainter.State.Success) { + it.result.drawable.run { + if ((intrinsicWidth.toFloat() / intrinsicHeight) in 0.5..0.8) { + if (contentScale == ContentScale.Fit) contentScale = ContentScale.Crop + } + } + } + }, + contentScale = contentScale, + ) +} diff --git a/app/src/main/res/menu/scene_gallery_detail.xml b/app/src/main/res/menu/scene_gallery_detail.xml deleted file mode 100644 index 090b8230f..000000000 --- a/app/src/main/res/menu/scene_gallery_detail.xml +++ /dev/null @@ -1,31 +0,0 @@ - - -