Skip to content

Commit aecdbb1

Browse files
dadachiclaude
andauthored
Drop onboarding pages 1-4, swap art for AutoAwesome icon (#48)
* Drop onboarding pages 1-4, swap art for AutoAwesome icon Onboarding now shows just the welcome screen (AutoAwesome icon + "Welcome to Native App Template"); the four sample pages, the `Onboarding` data class, `ImageOrientation` enum, `OnboardingViewModel`, their tests, and the `ic_overview1-4` and `ic_hero` drawables are removed. The sign-up/sign-in screen swaps the hero drawable for the same icon (headlineMedium bold/centered so the title fits one line), and `app_name` is updated to "Native App Template" so the launcher label and in-app title share a single source of truth. The splash icon is replaced with the same four-pointed sparkle (white on navy via windowSplashScreenBackground), and the adaptive launcher gains a <monochrome> layer for Android 13+ themed icons. Mirrors NativeAppTemplate-Android#61 / NativeAppTemplate-iOS#75. Per-density launcher webp refresh is left for a follow-up. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Refresh launcher icon with sparkle artwork Regenerated adaptive launcher icon (ic_launcher, ic_launcher_round across all density buckets, plus the playstore preview) so the home-screen icon matches the new in-app sparkle. Foreground and monochrome layers are now vector drawables (ic_launcher_foreground, ic_launcher_monochrome) — the per-density ic_launcher_foreground.webp files are no longer needed and have been removed. Background nudged to #1A2332 to match the refreshed artwork. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 72d39ea commit aecdbb1

35 files changed

Lines changed: 85 additions & 246 deletions
-1.27 KB
Loading

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

Lines changed: 0 additions & 11 deletions
This file was deleted.

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

Lines changed: 30 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,16 @@ package com.nativeapptemplate.nativeapptemplatefree.ui.app_root
22

33
import android.content.Intent
44
import android.net.Uri
5-
import androidx.compose.foundation.Image
65
import androidx.compose.foundation.background
7-
import androidx.compose.foundation.layout.Arrangement
86
import androidx.compose.foundation.layout.Box
9-
import androidx.compose.foundation.layout.Row
107
import androidx.compose.foundation.layout.fillMaxSize
118
import androidx.compose.foundation.layout.fillMaxWidth
129
import androidx.compose.foundation.layout.padding
13-
import androidx.compose.foundation.layout.size
14-
import androidx.compose.foundation.layout.wrapContentHeight
15-
import androidx.compose.foundation.pager.HorizontalPager
16-
import androidx.compose.foundation.pager.rememberPagerState
17-
import androidx.compose.foundation.shape.CircleShape
18-
import androidx.compose.foundation.shape.RoundedCornerShape
19-
import androidx.compose.material3.Card
20-
import androidx.compose.material3.CardDefaults
10+
import androidx.compose.material.icons.Icons
11+
import androidx.compose.material.icons.filled.AutoAwesome
2112
import androidx.compose.material3.CenterAlignedTopAppBar
2213
import androidx.compose.material3.ExperimentalMaterial3Api
14+
import androidx.compose.material3.Icon
2315
import androidx.compose.material3.MaterialTheme
2416
import androidx.compose.material3.Scaffold
2517
import androidx.compose.material3.Text
@@ -28,11 +20,8 @@ import androidx.compose.material3.TopAppBarDefaults
2820
import androidx.compose.runtime.Composable
2921
import androidx.compose.ui.Alignment
3022
import androidx.compose.ui.Modifier
31-
import androidx.compose.ui.draw.clip
3223
import androidx.compose.ui.graphics.Color
33-
import androidx.compose.ui.layout.ContentScale
3424
import androidx.compose.ui.platform.LocalContext
35-
import androidx.compose.ui.res.painterResource
3625
import androidx.compose.ui.res.stringResource
3726
import androidx.compose.ui.text.font.FontWeight
3827
import androidx.compose.ui.text.style.TextAlign
@@ -46,127 +35,49 @@ import com.nativeapptemplate.nativeapptemplatefree.ui.common.NonScaledSp.nonScal
4635
internal fun OnboardingView(
4736
onStartClick: () -> Unit,
4837
) {
49-
val fontSizeLarge = 24
50-
val lineHeightLarge = 26
51-
val onboardings = OnboardingViewModel.onboardings
52-
val pagerState = rememberPagerState(pageCount = {
53-
onboardings.size + 1
54-
})
55-
5638
Scaffold(
5739
topBar = { TopAppBar(onStartClick) },
5840
modifier = Modifier.fillMaxSize(),
5941
) { padding ->
6042
Box(
6143
modifier = Modifier
6244
.fillMaxSize()
63-
.padding(padding),
45+
.padding(padding)
46+
.padding(12.dp)
47+
.padding(top = 12.dp),
6448
) {
65-
HorizontalPager(
66-
state = pagerState,
49+
Icon(
50+
imageVector = Icons.Filled.AutoAwesome,
51+
contentDescription = null,
52+
tint = Color.White,
53+
modifier = Modifier
54+
.align(Alignment.TopCenter)
55+
.fillMaxSize()
56+
.padding(bottom = 192.dp),
57+
)
58+
Box(
6759
modifier = Modifier
68-
.fillMaxSize(),
69-
) { page ->
70-
if (page == 0) {
71-
WelcomePage()
72-
return@HorizontalPager
73-
}
74-
val onboarding = onboardings[page - 1]
75-
val imageBottomPadding = if (onboarding.imageOrientation == ImageOrientation.LANDSCAPE) 192.dp else 0.dp
76-
Box(
77-
modifier = Modifier
78-
.fillMaxSize()
79-
.padding(12.dp)
80-
.padding(top = 12.dp),
81-
) {
82-
Image(
83-
painter = painterResource(OnboardingViewModel.onboardingImageId(onboarding.id)),
84-
contentDescription = null,
85-
contentScale = ContentScale.Fit,
86-
modifier = Modifier
87-
.align(Alignment.TopCenter)
88-
.padding(bottom = imageBottomPadding),
89-
)
90-
Card(
91-
shape = RoundedCornerShape(16.dp),
92-
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surfaceVariant),
93-
94-
modifier = Modifier
95-
.align(Alignment.BottomCenter),
96-
) {
97-
Text(
98-
stringResource(OnboardingViewModel.onboardingDescription(onboarding.id)),
99-
color = MaterialTheme.colorScheme.onSurfaceVariant,
100-
fontSize = fontSizeLarge.sp.nonScaledSp,
101-
lineHeight = lineHeightLarge.sp.nonScaledSp,
102-
modifier = Modifier
103-
.padding(24.dp)
104-
.padding(bottom = 16.dp),
105-
)
106-
}
107-
}
108-
}
109-
Row(
110-
Modifier
111-
.wrapContentHeight()
112-
.fillMaxWidth()
11360
.align(Alignment.BottomCenter)
114-
.padding(bottom = 8.dp),
115-
horizontalArrangement = Arrangement.Center,
61+
.fillMaxWidth()
62+
.background(MaterialTheme.colorScheme.background),
11663
) {
117-
repeat(pagerState.pageCount) { iteration ->
118-
val color = if (pagerState.currentPage == iteration) Color.DarkGray else Color.LightGray
119-
Box(
120-
modifier = Modifier
121-
.padding(2.dp)
122-
.clip(CircleShape)
123-
.background(color)
124-
.size(16.dp),
125-
)
126-
}
64+
Text(
65+
text = stringResource(R.string.welcome_to_app, stringResource(R.string.app_name)),
66+
color = MaterialTheme.colorScheme.onBackground,
67+
fontSize = 34.sp.nonScaledSp,
68+
lineHeight = 41.sp.nonScaledSp,
69+
fontWeight = FontWeight.Bold,
70+
textAlign = TextAlign.Center,
71+
modifier = Modifier
72+
.align(Alignment.TopCenter)
73+
.fillMaxWidth()
74+
.padding(16.dp),
75+
)
12776
}
12877
}
12978
}
13079
}
13180

132-
@Composable
133-
private fun WelcomePage() {
134-
Box(
135-
modifier = Modifier
136-
.fillMaxSize()
137-
.padding(12.dp)
138-
.padding(top = 12.dp),
139-
) {
140-
Image(
141-
painter = painterResource(R.drawable.ic_hero),
142-
contentDescription = null,
143-
contentScale = ContentScale.Fit,
144-
modifier = Modifier
145-
.align(Alignment.TopCenter)
146-
.padding(bottom = 192.dp),
147-
)
148-
Box(
149-
modifier = Modifier
150-
.align(Alignment.BottomCenter)
151-
.fillMaxWidth()
152-
.background(MaterialTheme.colorScheme.background),
153-
) {
154-
Text(
155-
text = stringResource(R.string.welcome_to_app, stringResource(R.string.app_name)),
156-
color = MaterialTheme.colorScheme.onBackground,
157-
fontSize = 34.sp.nonScaledSp,
158-
lineHeight = 41.sp.nonScaledSp,
159-
fontWeight = FontWeight.Bold,
160-
textAlign = TextAlign.Center,
161-
modifier = Modifier
162-
.align(Alignment.TopCenter)
163-
.fillMaxWidth()
164-
.padding(16.dp),
165-
)
166-
}
167-
}
168-
}
169-
17081
@OptIn(ExperimentalMaterial3Api::class)
17182
@Composable
17283
private fun TopAppBar(

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

Lines changed: 0 additions & 34 deletions
This file was deleted.

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

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@ package com.nativeapptemplate.nativeapptemplatefree.ui.app_root
22

33
import android.content.Intent
44
import android.net.Uri
5-
import androidx.compose.foundation.Image
65
import androidx.compose.foundation.layout.Arrangement
76
import androidx.compose.foundation.layout.Column
87
import androidx.compose.foundation.layout.fillMaxSize
98
import androidx.compose.foundation.layout.fillMaxWidth
9+
import androidx.compose.foundation.layout.height
1010
import androidx.compose.foundation.layout.padding
1111
import androidx.compose.foundation.rememberScrollState
1212
import androidx.compose.foundation.verticalScroll
1313
import androidx.compose.material.icons.Icons
1414
import androidx.compose.material.icons.automirrored.filled.ArrowBack
15+
import androidx.compose.material.icons.filled.AutoAwesome
1516
import androidx.compose.material3.CenterAlignedTopAppBar
1617
import androidx.compose.material3.ExperimentalMaterial3Api
1718
import androidx.compose.material3.Icon
@@ -24,14 +25,15 @@ import androidx.compose.material3.TopAppBarDefaults
2425
import androidx.compose.runtime.Composable
2526
import androidx.compose.ui.Alignment
2627
import androidx.compose.ui.Modifier
27-
import androidx.compose.ui.layout.ContentScale
28+
import androidx.compose.ui.graphics.Color
2829
import androidx.compose.ui.platform.LocalContext
29-
import androidx.compose.ui.res.painterResource
3030
import androidx.compose.ui.res.stringResource
3131
import androidx.compose.ui.text.LinkAnnotation
3232
import androidx.compose.ui.text.SpanStyle
3333
import androidx.compose.ui.text.TextLinkStyles
3434
import androidx.compose.ui.text.buildAnnotatedString
35+
import androidx.compose.ui.text.font.FontWeight
36+
import androidx.compose.ui.text.style.TextAlign
3537
import androidx.compose.ui.text.withLink
3638
import androidx.compose.ui.text.withStyle
3739
import androidx.compose.ui.unit.dp
@@ -63,18 +65,21 @@ internal fun SignUpOrSignInView(
6365
) {
6466
Text(
6567
stringResource(R.string.app_name),
66-
style = MaterialTheme.typography.displaySmall,
68+
style = MaterialTheme.typography.headlineMedium,
69+
fontWeight = FontWeight.Bold,
70+
textAlign = TextAlign.Center,
6771
modifier = Modifier
6872
.fillMaxWidth()
6973
.padding(horizontal = 24.dp),
7074
)
7175

72-
Image(
73-
painter = painterResource(R.drawable.ic_hero),
76+
Icon(
77+
imageVector = Icons.Filled.AutoAwesome,
7478
contentDescription = null,
75-
contentScale = ContentScale.FillWidth,
79+
tint = Color.White,
7680
modifier = Modifier
7781
.fillMaxWidth()
82+
.height(256.dp)
7883
.padding(vertical = 24.dp),
7984
)
8085

-60.5 KB
Binary file not shown.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="108dp"
3+
android:height="108dp"
4+
android:viewportWidth="1024"
5+
android:viewportHeight="1024">
6+
<group android:scaleX="0.6111111"
7+
android:scaleY="0.6111111"
8+
android:translateX="199.11111"
9+
android:translateY="199.11111">
10+
<path
11+
android:pathData="M0,0h1024v1024h-1024z"
12+
android:fillColor="#1A2332"/>
13+
<path
14+
android:pathData="M512,92C512,372 552,472 932,512C552,552 512,652 512,932C512,652 472,552 92,512C472,472 512,372 512,92Z"
15+
android:fillColor="#FFFFFF"/>
16+
</group>
17+
</vector>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="108dp"
3+
android:height="108dp"
4+
android:viewportWidth="1024"
5+
android:viewportHeight="1024">
6+
<group android:scaleX="0.6111111"
7+
android:scaleY="0.6111111"
8+
android:translateX="199.11111"
9+
android:translateY="199.11111">
10+
<path
11+
android:pathData="M0,0h1024v1024h-1024z"
12+
android:fillColor="#1A2332"/>
13+
<path
14+
android:pathData="M512,92C512,372 552,472 932,512C552,552 512,652 512,932C512,652 472,552 92,512C472,472 512,372 512,92Z"
15+
android:fillColor="#FFFFFF"/>
16+
</group>
17+
</vector>
-90.5 KB
Binary file not shown.
-94.4 KB
Binary file not shown.

0 commit comments

Comments
 (0)