diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.kt b/app/src/main/java/com/hippo/ehviewer/Settings.kt index de308d002..80368d542 100755 --- a/app/src/main/java/com/hippo/ehviewer/Settings.kt +++ b/app/src/main/java/com/hippo/ehviewer/Settings.kt @@ -19,8 +19,6 @@ import android.content.SharedPreferences import android.net.Uri import android.util.Log import androidx.annotation.DimenRes -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp import androidx.preference.PreferenceManager import com.hippo.ehviewer.EhApplication.Companion.application import com.hippo.ehviewer.client.data.FavListUrlBuilder @@ -368,10 +366,10 @@ object Settings { else -> throw IllegalStateException("Unexpected value: $detailSize") } val thumbSize: Int - get() = dp2pix(application, getInt(KEY_THUMB_SIZE, DEFAULT_THUMB_SIZE).toFloat()) + get() = dp2pix(application, thumbSizeDp.toFloat()) - val thumbSizeDp: Dp - get() = (getInt(KEY_THUMB_SIZE, DEFAULT_THUMB_SIZE) - 8).dp + val thumbSizeDp: Int + get() = getInt(KEY_THUMB_SIZE, DEFAULT_THUMB_SIZE) val thumbResolution: Int get() = getIntFromStr(KEY_THUMB_RESOLUTION, DEFAULT_THUMB_RESOLUTION) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryAdapter.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryAdapter.kt index 9e8b1fdcd..e28416124 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryAdapter.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryAdapter.kt @@ -31,6 +31,7 @@ import com.hippo.ehviewer.databinding.ItemGalleryGridBinding import com.hippo.ehviewer.databinding.ItemGalleryListBinding import com.hippo.widget.recyclerview.AutoStaggeredGridLayoutManager import com.hippo.widget.recyclerview.STRATEGY_MIN_SIZE +import com.hippo.widget.recyclerview.STRATEGY_SUITABLE_SIZE import com.hippo.yorozuya.ViewUtils internal abstract class GalleryAdapter( @@ -85,7 +86,7 @@ internal abstract class GalleryAdapter( TYPE_GRID -> { val columnWidth = Settings.thumbSize mLayoutManager.setColumnSize(columnWidth) - mLayoutManager.setStrategy(STRATEGY_MIN_SIZE) + mLayoutManager.setStrategy(STRATEGY_SUITABLE_SIZE) if (null != mListDecoration) { recyclerView.removeItemDecoration(mListDecoration!!) } 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 17b9d772e..0afe347f1 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 @@ -99,6 +99,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.ComposeView +import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -169,6 +170,7 @@ import com.hippo.util.ReadableTime import com.hippo.util.addTextToClipboard import com.hippo.util.getParcelableCompat import com.hippo.widget.ObservedTextView +import com.hippo.widget.recyclerview.getSpanCountForSuitableSize import com.hippo.yorozuya.FileUtils import com.hippo.yorozuya.ViewUtils import com.hippo.yorozuya.collect.IntList @@ -516,9 +518,12 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener { modifier: Modifier, ) { val windowSizeClass = calculateWindowSizeClass(requireActivity()) + // Padding is not subtracted here to have the same column count as gallery list and preview + val totalSpace = LocalConfiguration.current.screenWidthDp + val columnCount = getSpanCountForSuitableSize(totalSpace, Settings.thumbSizeDp) when (windowSizeClass.widthSizeClass) { WindowWidthSizeClass.Medium, WindowWidthSizeClass.Compact -> LazyVerticalGrid( - columns = GridCells.Adaptive(Settings.thumbSizeDp), + columns = GridCells.Fixed(columnCount), contentPadding = contentPadding, modifier = modifier.padding(horizontal = dimensionResource(id = R.dimen.keyline_margin)), horizontalArrangement = Arrangement.spacedBy(dimensionResource(id = R.dimen.strip_item_padding)), @@ -573,7 +578,7 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener { } WindowWidthSizeClass.Expanded -> LazyVerticalGrid( - columns = GridCells.Adaptive(Settings.thumbSizeDp), + columns = GridCells.Fixed(columnCount), contentPadding = contentPadding, modifier = modifier.padding(horizontal = dimensionResource(id = R.dimen.keyline_margin)), horizontalArrangement = Arrangement.spacedBy(dimensionResource(id = R.dimen.strip_item_padding)), diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.kt index dc05bf5e5..d34385732 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.kt @@ -40,7 +40,7 @@ import com.hippo.ehviewer.databinding.SceneGalleryPreviewsBinding import com.hippo.util.getParcelableCompat import com.hippo.widget.ContentLayout.ContentHelper import com.hippo.widget.recyclerview.AutoGridLayoutManager -import com.hippo.widget.recyclerview.STRATEGY_MIN_SIZE +import com.hippo.widget.recyclerview.STRATEGY_SUITABLE_SIZE import eu.kanade.tachiyomi.util.lang.launchIO import java.util.Locale @@ -98,7 +98,7 @@ class GalleryPreviewsScene : BaseToolbarScene() { binding.contentLayout.recyclerView.adapter = mAdapter val columnWidth = Settings.thumbSize val layoutManager = AutoGridLayoutManager(context, columnWidth) - layoutManager.setStrategy(STRATEGY_MIN_SIZE) + layoutManager.setStrategy(STRATEGY_SUITABLE_SIZE) binding.contentLayout.recyclerView.layoutManager = layoutManager binding.contentLayout.recyclerView.clipToPadding = false val padding = resources.getDimensionPixelSize(R.dimen.gallery_grid_margin_h)