Skip to content

Commit 523613d

Browse files
committed
improve tutorial layout scaling
1 parent 3978cf7 commit 523613d

File tree

2 files changed

+32
-30
lines changed

2 files changed

+32
-30
lines changed

app/src/main/java/com/uravgcode/chooser/tutorial/presentation/TutorialScreen.kt

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Arrangement
55
import androidx.compose.foundation.layout.Box
66
import androidx.compose.foundation.layout.Column
77
import androidx.compose.foundation.layout.WindowInsets
8-
import androidx.compose.foundation.layout.fillMaxSize
98
import androidx.compose.foundation.layout.fillMaxWidth
109
import androidx.compose.foundation.layout.padding
1110
import androidx.compose.foundation.layout.safeDrawing
@@ -17,10 +16,14 @@ import androidx.compose.material.icons.automirrored.filled.ArrowForward
1716
import androidx.compose.material.icons.filled.Check
1817
import androidx.compose.material3.Icon
1918
import androidx.compose.material3.IconButton
19+
import androidx.compose.material3.MaterialTheme
2020
import androidx.compose.material3.Scaffold
2121
import androidx.compose.material3.Text
2222
import androidx.compose.material3.TextButton
2323
import androidx.compose.runtime.Composable
24+
import androidx.compose.runtime.derivedStateOf
25+
import androidx.compose.runtime.getValue
26+
import androidx.compose.runtime.remember
2427
import androidx.compose.runtime.rememberCoroutineScope
2528
import androidx.compose.ui.Alignment
2629
import androidx.compose.ui.Modifier
@@ -41,43 +44,43 @@ fun TutorialScreen(onComplete: () -> Unit) {
4144
contentWindowInsets = WindowInsets.safeDrawing,
4245
) { padding ->
4346
Column(
44-
modifier = Modifier.padding(padding),
47+
modifier = Modifier
48+
.padding(padding)
49+
.padding(horizontal = 16.dp),
4550
verticalArrangement = Arrangement.Center
4651
) {
4752
Box(
4853
modifier = Modifier.fillMaxWidth()
4954
) {
5055
TextButton(
5156
onClick = { onComplete() },
52-
modifier = Modifier
53-
.align(Alignment.TopEnd)
54-
.padding(end = 16.dp)
57+
modifier = Modifier.align(Alignment.TopEnd)
5558
) {
56-
Text("Skip")
59+
Text(
60+
text = "Skip",
61+
style = MaterialTheme.typography.bodyLarge,
62+
)
5763
}
5864
}
5965

6066
HorizontalPager(
6167
state = pagerState,
62-
modifier = Modifier.weight(1f)
68+
modifier = Modifier.weight(1f),
6369
) { page ->
64-
Box(
65-
modifier = Modifier
66-
.fillMaxSize()
67-
.padding(16.dp),
68-
contentAlignment = Alignment.Center
69-
) {
70-
val isPageFullyVisible = pagerState.currentPage == page &&
71-
pagerState.currentPageOffsetFraction.absoluteValue < 0.1f
72-
73-
TutorialPage(
74-
iconId = pagerContent[page].iconId,
75-
previewId = pagerContent[page].previewId,
76-
title = pagerContent[page].title,
77-
description = pagerContent[page].description,
78-
isVisible = isPageFullyVisible,
79-
)
70+
val isPageFullyVisible by remember {
71+
derivedStateOf {
72+
pagerState.currentPage == page &&
73+
pagerState.currentPageOffsetFraction.absoluteValue < 0.1f
74+
}
8075
}
76+
77+
TutorialPage(
78+
iconId = pagerContent[page].iconId,
79+
previewId = pagerContent[page].previewId,
80+
title = pagerContent[page].title,
81+
description = pagerContent[page].description,
82+
isVisible = isPageFullyVisible,
83+
)
8184
}
8285

8386
Box(
@@ -89,9 +92,7 @@ fun TutorialScreen(onComplete: () -> Unit) {
8992
pagerState.animateScrollToPage(pagerState.currentPage - 1)
9093
}
9194
},
92-
modifier = Modifier
93-
.align(Alignment.CenterStart)
94-
.padding(start = 16.dp)
95+
modifier = Modifier.align(Alignment.CenterStart)
9596
) {
9697
Icon(
9798
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
@@ -114,9 +115,7 @@ fun TutorialScreen(onComplete: () -> Unit) {
114115
onComplete()
115116
}
116117
},
117-
modifier = Modifier
118-
.align(Alignment.CenterEnd)
119-
.padding(end = 16.dp)
118+
modifier = Modifier.align(Alignment.CenterEnd)
120119
) {
121120
Icon(
122121
imageVector = if (pagerState.currentPage < pagerState.pageCount - 1)

app/src/main/java/com/uravgcode/chooser/tutorial/presentation/component/TutorialPage.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,16 @@ fun TutorialPage(
5555
}
5656

5757
Column(
58+
modifier = Modifier.fillMaxSize(),
5859
horizontalAlignment = Alignment.CenterHorizontally,
5960
verticalArrangement = Arrangement.Center
6061
) {
6162
Surface(
6263
shape = CircleShape,
6364
color = MaterialTheme.colorScheme.surfaceContainerLowest,
64-
modifier = Modifier.aspectRatio(1f)
65+
modifier = Modifier
66+
.aspectRatio(1f)
67+
.weight(weight = 1f, fill = false),
6568
) {
6669
Image(
6770
painter = rememberAnimatedVectorPainter(image, atEnd),

0 commit comments

Comments
 (0)