Skip to content

Commit 7c1188c

Browse files
dadachiclaude
andauthored
Slim onboarding to 4 slides and add ImageOrientation enum (#39)
Mirrors NativeAppTemplate-iOS#63 / NativeAppTemplate-Android#52: drops slides 5-8, replaces descriptions with neutral placeholders, and introduces an ImageOrientation enum so slides drive their own bottom-padding instead of a Bool. View now reads the slide list from the ViewModel rather than a hard-coded count. Also swaps SignUpOrSignInView from ic_overview1_slim to a dedicated ic_hero image and prunes unused overview drawables. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 630b34f commit 7c1188c

21 files changed

Lines changed: 49 additions & 42 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.nativeapptemplate.nativeapptemplatefree.ui.app_root
2+
3+
enum class ImageOrientation {
4+
PORTRAIT,
5+
LANDSCAPE,
6+
}
7+
8+
data class Onboarding(
9+
val id: Int,
10+
val imageOrientation: ImageOrientation = ImageOrientation.LANDSCAPE,
11+
)

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/OnboardingView.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,9 @@ internal fun OnboardingView(
4646
) {
4747
val fontSizeLarge = 24
4848
val lineHeightLarge = 26
49+
val onboardings = OnboardingViewModel.onboardings
4950
val pagerState = rememberPagerState(pageCount = {
50-
8
51+
onboardings.size
5152
})
5253

5354
Scaffold(
@@ -64,18 +65,21 @@ internal fun OnboardingView(
6465
modifier = Modifier
6566
.fillMaxSize(),
6667
) { page ->
68+
val onboarding = onboardings[page]
69+
val imageBottomPadding = if (onboarding.imageOrientation == ImageOrientation.LANDSCAPE) 192.dp else 0.dp
6770
Box(
6871
modifier = Modifier
6972
.fillMaxSize()
7073
.padding(12.dp)
7174
.padding(top = 12.dp),
7275
) {
7376
Image(
74-
painter = painterResource(OnboardingViewModel.onboardingImageId(page)),
77+
painter = painterResource(OnboardingViewModel.onboardingImageId(onboarding.id)),
7578
contentDescription = null,
7679
contentScale = ContentScale.Fit,
7780
modifier = Modifier
78-
.align(Alignment.TopCenter),
81+
.align(Alignment.TopCenter)
82+
.padding(bottom = imageBottomPadding),
7983
)
8084
Card(
8185
shape = RoundedCornerShape(16.dp),
@@ -85,7 +89,7 @@ internal fun OnboardingView(
8589
.align(Alignment.BottomCenter),
8690
) {
8791
Text(
88-
stringResource(OnboardingViewModel.onboardingDescription(page)),
92+
stringResource(OnboardingViewModel.onboardingDescription(onboarding.id)),
8993
color = MaterialTheme.colorScheme.onSurfaceVariant,
9094
fontSize = fontSizeLarge.sp.nonScaledSp,
9195
lineHeight = lineHeightLarge.sp.nonScaledSp,

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/OnboardingViewModel.kt

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,27 @@ import javax.inject.Inject
88
@HiltViewModel
99
class OnboardingViewModel @Inject constructor() : ViewModel() {
1010
companion object {
11-
fun onboardingDescription(index: Int): Int {
12-
val description = when (index) {
13-
0 -> R.string.onboarding_description1
14-
1 -> R.string.onboarding_description2
15-
2 -> R.string.onboarding_description3
16-
3 -> R.string.onboarding_description4
17-
4 -> R.string.onboarding_description5
18-
5 -> R.string.onboarding_description6
19-
6 -> R.string.onboarding_description7
20-
7 -> R.string.onboarding_description8
21-
else -> R.string.onboarding_description1
22-
}
11+
val onboardings: List<Onboarding> = listOf(
12+
Onboarding(id = 1, imageOrientation = ImageOrientation.LANDSCAPE),
13+
Onboarding(id = 2, imageOrientation = ImageOrientation.LANDSCAPE),
14+
Onboarding(id = 3, imageOrientation = ImageOrientation.PORTRAIT),
15+
Onboarding(id = 4, imageOrientation = ImageOrientation.PORTRAIT),
16+
)
2317

24-
return description
18+
fun onboardingDescription(id: Int): Int = when (id) {
19+
1 -> R.string.onboarding_description1
20+
2 -> R.string.onboarding_description2
21+
3 -> R.string.onboarding_description3
22+
4 -> R.string.onboarding_description4
23+
else -> R.string.onboarding_description1
2524
}
2625

27-
fun onboardingImageId(index: Int): Int {
28-
val imageId = when (index) {
29-
0 -> R.drawable.ic_overview1
30-
1 -> R.drawable.ic_overview2
31-
2 -> R.drawable.ic_overview3
32-
3 -> R.drawable.ic_overview4
33-
4 -> R.drawable.ic_overview5
34-
5 -> R.drawable.ic_overview6
35-
6 -> R.drawable.ic_overview7
36-
7 -> R.drawable.ic_overview8
37-
else -> R.drawable.ic_overview1
38-
}
39-
40-
return imageId
26+
fun onboardingImageId(id: Int): Int = when (id) {
27+
1 -> R.drawable.ic_overview1
28+
2 -> R.drawable.ic_overview2
29+
3 -> R.drawable.ic_overview3
30+
4 -> R.drawable.ic_overview4
31+
else -> R.drawable.ic_overview1
4132
}
4233
}
4334
}

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpOrSignInView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ internal fun SignUpOrSignInView(
7070
)
7171

7272
Image(
73-
painter = painterResource(R.drawable.ic_overview1_slim),
73+
painter = painterResource(R.drawable.ic_hero),
7474
contentDescription = null,
7575
contentScale = ContentScale.FillWidth,
7676
modifier = Modifier
60.5 KB
Loading
-240 KB
Loading
-238 KB
Binary file not shown.
-370 KB
Binary file not shown.
-308 KB
Binary file not shown.
-310 KB
Binary file not shown.

0 commit comments

Comments
 (0)