From 0b45c41a99b3ed759818957f8d67c72f0416ab51 Mon Sep 17 00:00:00 2001 From: tarsin Date: Fri, 17 Mar 2023 17:28:22 +0800 Subject: [PATCH] Convert to LazyVerticalStaggeredGrid, preparing add previews --- .../ehviewer/ui/scene/GalleryDetailScene.kt | 88 ++++++++++--------- 1 file changed, 46 insertions(+), 42 deletions(-) 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 4f154781d..83243ae82 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 @@ -50,9 +50,10 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.lazy.staggeredgrid.LazyVerticalStaggeredGrid +import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells +import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridItemSpan import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.CloudDone @@ -503,9 +504,7 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener { GalleryDetailContent( galleryInfo = gi, galleryDetail = composeBindingGD, - modifier = Modifier - .nestedScroll(scrollBehavior.nestedScrollConnection) - .verticalScroll(rememberScrollState()) + modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection) ) } else { Box( @@ -529,45 +528,50 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener { galleryDetail: GalleryDetail?, modifier: Modifier ) { - Column( + LazyVerticalStaggeredGrid( + columns = StaggeredGridCells.Adaptive(160.dp), modifier = modifier.padding(horizontal = dimensionResource(id = R.dimen.keyline_margin)) ) { - GalleryDetailHeaderCard( - galleryInfo = galleryInfo, - galleryDetail = galleryDetail, - onInfoCardClick = ::onGalleryInfoCardClick, - onCategoryChipClick = ::onCategoryChipClick, - onUploaderChipClick = ::onUploaderChipClick, - modifier = Modifier - .fillMaxWidth() - .padding(vertical = dimensionResource(id = R.dimen.keyline_margin)) - ) - Row { - FilledTonalButton( - onClick = ::onDownloadButtonClick, - modifier = Modifier - .padding(horizontal = 4.dp) - .weight(1F) - ) { - Text(text = downloadButtonText) - } - Button( - onClick = ::onReadButtonClick, - modifier = Modifier - .padding(horizontal = 4.dp) - .weight(1F) - ) { - Text(text = readButtonText) - } - } - if (galleryDetail != null) { - BelowHeader(galleryDetail) - } else { - Box( - modifier = Modifier.fillMaxSize(), - contentAlignment = Alignment.Center - ) { - CircularProgressIndicator() + item(span = StaggeredGridItemSpan.FullLine) { + Column { + GalleryDetailHeaderCard( + galleryInfo = galleryInfo, + galleryDetail = galleryDetail, + onInfoCardClick = ::onGalleryInfoCardClick, + onCategoryChipClick = ::onCategoryChipClick, + onUploaderChipClick = ::onUploaderChipClick, + modifier = Modifier + .fillMaxWidth() + .padding(vertical = dimensionResource(id = R.dimen.keyline_margin)) + ) + Row { + FilledTonalButton( + onClick = ::onDownloadButtonClick, + modifier = Modifier + .padding(horizontal = 4.dp) + .weight(1F) + ) { + Text(text = downloadButtonText) + } + Button( + onClick = ::onReadButtonClick, + modifier = Modifier + .padding(horizontal = 4.dp) + .weight(1F) + ) { + Text(text = readButtonText) + } + } + if (galleryDetail != null) { + BelowHeader(galleryDetail) + } else { + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + CircularProgressIndicator() + } + } } } }