diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/OnboardingView.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/OnboardingView.kt
index 2c13f09..9b88384 100644
--- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/OnboardingView.kt
+++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/OnboardingView.kt
@@ -34,6 +34,8 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.nativeapptemplate.nativeapptemplatefree.NativeAppTemplateConstants
@@ -48,7 +50,7 @@ internal fun OnboardingView(
val lineHeightLarge = 26
val onboardings = OnboardingViewModel.onboardings
val pagerState = rememberPagerState(pageCount = {
- onboardings.size
+ onboardings.size + 1
})
Scaffold(
@@ -65,7 +67,11 @@ internal fun OnboardingView(
modifier = Modifier
.fillMaxSize(),
) { page ->
- val onboarding = onboardings[page]
+ if (page == 0) {
+ WelcomePage()
+ return@HorizontalPager
+ }
+ val onboarding = onboardings[page - 1]
val imageBottomPadding = if (onboarding.imageOrientation == ImageOrientation.LANDSCAPE) 192.dp else 0.dp
Box(
modifier = Modifier
@@ -123,6 +129,44 @@ internal fun OnboardingView(
}
}
+@Composable
+private fun WelcomePage() {
+ Box(
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(12.dp)
+ .padding(top = 12.dp),
+ ) {
+ Image(
+ painter = painterResource(R.drawable.ic_hero),
+ contentDescription = null,
+ contentScale = ContentScale.Fit,
+ modifier = Modifier
+ .align(Alignment.TopCenter)
+ .padding(bottom = 192.dp),
+ )
+ Box(
+ modifier = Modifier
+ .align(Alignment.BottomCenter)
+ .fillMaxWidth()
+ .background(MaterialTheme.colorScheme.background),
+ ) {
+ Text(
+ text = stringResource(R.string.welcome_to_app, stringResource(R.string.app_name)),
+ color = MaterialTheme.colorScheme.onBackground,
+ fontSize = 34.sp.nonScaledSp,
+ lineHeight = 41.sp.nonScaledSp,
+ fontWeight = FontWeight.Bold,
+ textAlign = TextAlign.Center,
+ modifier = Modifier
+ .align(Alignment.TopCenter)
+ .fillMaxWidth()
+ .padding(16.dp),
+ )
+ }
+ }
+}
+
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun TopAppBar(
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index beca9a9..e63e073 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -66,6 +66,7 @@
Terms of Use Updated
+ Welcome to %1$s
Onboarding description 1.
Onboarding description 2.
Onboarding description 3.