Skip to content

Commit 5768038

Browse files
authored
Apply consistent styling across examples (#31)
* Apply consistent styling across examples * Remove Preview tooling import
1 parent e128a4b commit 5768038

File tree

11 files changed

+113
-103
lines changed

11 files changed

+113
-103
lines changed

ai-catalog/samples/gemini-chatbot/src/main/java/com/android/ai/samples/geminichatbot/GeminiChatbotScreen.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,13 @@ fun MessageBubble(
191191
@Composable
192192
fun SeeCodeButton(context: Context) {
193193
val githubLink = "https://github.com/android/ai-samples/tree/main/ai-catalog/samples/gemini-chatbot"
194-
Button(onClick = {
195-
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(githubLink))
196-
context.startActivity(intent)
197-
}) {
194+
Button(
195+
onClick = {
196+
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(githubLink))
197+
context.startActivity(intent)
198+
},
199+
modifier = Modifier.padding(end = 8.dp)
200+
) {
198201
Icon(Icons.Filled.Code, contentDescription = "See code")
199202
Text(
200203
modifier = Modifier.padding(start = 8.dp),

ai-catalog/samples/gemini-chatbot/src/main/java/com/android/ai/samples/geminichatbot/InputBar.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@ package com.android.ai.samples.geminichatbot
2020
import androidx.compose.foundation.layout.Arrangement
2121
import androidx.compose.foundation.layout.PaddingValues
2222
import androidx.compose.foundation.layout.Row
23+
import androidx.compose.foundation.layout.Spacer
2324
import androidx.compose.foundation.layout.height
2425
import androidx.compose.foundation.layout.padding
2526
import androidx.compose.foundation.layout.size
27+
import androidx.compose.foundation.layout.width
2628
import androidx.compose.foundation.text.KeyboardActions
2729
import androidx.compose.foundation.text.KeyboardOptions
2830
import androidx.compose.material.icons.Icons
@@ -84,6 +86,7 @@ internal fun InputBar(
8486
disabledIndicatorColor = Color.Transparent,
8587
),
8688
)
89+
Spacer(modifier = Modifier.width(4.dp))
8790
FilledIconButton(
8891
onClick = onSendClick,
8992
modifier = Modifier.size(56.dp),

ai-catalog/samples/gemini-multimodal/src/main/java/com/android/ai/samples/geminimultimodal/GeminiMultimodalScreen.kt

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,21 @@
1717
package com.android.ai.samples.geminimultimodal
1818

1919
import android.annotation.SuppressLint
20-
import android.app.Activity
2120
import android.content.Context
2221
import android.content.Intent
2322
import android.graphics.Bitmap
2423
import android.net.Uri
25-
import android.provider.MediaStore
2624
import androidx.activity.compose.rememberLauncherForActivityResult
27-
import androidx.activity.result.ActivityResult
28-
import androidx.activity.result.contract.ActivityResultContracts
29-
import androidx.compose.foundation.BorderStroke
25+
import androidx.activity.result.contract.ActivityResultContracts.TakePicturePreview
3026
import androidx.compose.foundation.Image
27+
import androidx.compose.foundation.layout.Arrangement
3128
import androidx.compose.foundation.layout.Column
3229
import androidx.compose.foundation.layout.Row
3330
import androidx.compose.foundation.layout.Spacer
3431
import androidx.compose.foundation.layout.fillMaxSize
3532
import androidx.compose.foundation.layout.fillMaxWidth
3633
import androidx.compose.foundation.layout.height
3734
import androidx.compose.foundation.layout.padding
38-
import androidx.compose.foundation.layout.safeContentPadding
3935
import androidx.compose.foundation.layout.size
4036
import androidx.compose.foundation.rememberScrollState
4137
import androidx.compose.foundation.verticalScroll
@@ -45,9 +41,11 @@ import androidx.compose.material.icons.filled.Code
4541
import androidx.compose.material.icons.filled.SmartToy
4642
import androidx.compose.material3.Button
4743
import androidx.compose.material3.Card
44+
import androidx.compose.material3.CardDefaults
4845
import androidx.compose.material3.ExperimentalMaterial3Api
4946
import androidx.compose.material3.Icon
5047
import androidx.compose.material3.MaterialTheme
48+
import androidx.compose.material3.OutlinedCard
5149
import androidx.compose.material3.Scaffold
5250
import androidx.compose.material3.Text
5351
import androidx.compose.material3.TextField
@@ -76,7 +74,6 @@ fun GeminiMultimodalScreen(
7674
viewModel: GeminiMultimodalViewModel = hiltViewModel(),
7775
) {
7876
val context = LocalContext.current
79-
val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
8077
var bitmap by remember { mutableStateOf<Bitmap?>(null) }
8178
val textResponse by viewModel.textGenerated.collectAsState()
8279
val isGenerating by viewModel.isGenerating.observeAsState(false)
@@ -88,16 +85,12 @@ fun GeminiMultimodalScreen(
8885
}
8986

9087
// Get the picture taken by the camera
91-
val resultLauncher =
92-
rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) {
93-
result: ActivityResult ->
94-
if (result.resultCode == Activity.RESULT_OK) {
95-
if (result.data != null) {
96-
bitmap = result.data?.extras?.get("data") as Bitmap
97-
pictureAvailable = true
98-
}
99-
}
88+
val cameraLauncher = rememberLauncherForActivityResult(TakePicturePreview()) { result ->
89+
result?.let {
90+
bitmap = it
91+
pictureAvailable = true
10092
}
93+
}
10194

10295
Scaffold (
10396
topBar = {
@@ -121,7 +114,6 @@ fun GeminiMultimodalScreen(
121114
.verticalScroll(rememberScrollState())
122115
.padding(innerPadding)
123116
) {
124-
Spacer(modifier = Modifier.height(12.dp))
125117
Card(
126118
modifier = Modifier
127119
.size(
@@ -134,27 +126,27 @@ fun GeminiMultimodalScreen(
134126
bitmap = it.asImageBitmap(),
135127
contentDescription = "Picture",
136128
contentScale = ContentScale.Fit,
137-
modifier = Modifier.fillMaxWidth()
129+
modifier = Modifier.fillMaxSize()
138130
)
139131
}
140132
}
141133
Spacer(modifier = Modifier.height(6.dp))
142-
Row {
134+
Row(horizontalArrangement = Arrangement.Center, modifier = Modifier.fillMaxWidth()) {
143135
Button (
144136
onClick = {
145-
resultLauncher.launch(cameraIntent)
137+
cameraLauncher.launch(null)
146138
},
147139
) {
148140
Icon(Icons.Default.CameraAlt, contentDescription = "Camera")
149141
}
150142
}
151-
Spacer(modifier = Modifier.height(30.dp))
143+
Spacer(modifier = Modifier.height(24.dp))
152144
TextField(
153145
value = editTextValue,
154146
onValueChange = { editTextValue = it },
155147
label = { Text("Prompt") }
156148
)
157-
Spacer(modifier = Modifier.height(6.dp))
149+
Spacer(modifier = Modifier.height(8.dp))
158150
Button (
159151
onClick = {
160152
if (bitmap!=null) {
@@ -167,7 +159,7 @@ fun GeminiMultimodalScreen(
167159
Text(modifier = Modifier.padding(start = 8.dp), text = "Generate")
168160
}
169161
Spacer(modifier = Modifier
170-
.height(30.dp))
162+
.height(24.dp))
171163

172164
if (isGenerating){
173165
Text(
@@ -185,10 +177,13 @@ fun GeminiMultimodalScreen(
185177
@Composable
186178
fun SeeCodeButton(context: Context) {
187179
val githubLink = "https://github.com/android/ai-samples/tree/main/ai-catalog/samples/gemini-multimodal"
188-
Button(onClick = {
189-
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(githubLink))
190-
context.startActivity(intent)
191-
}) {
180+
Button(
181+
onClick = {
182+
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(githubLink))
183+
context.startActivity(intent)
184+
},
185+
modifier = Modifier.padding(end = 8.dp)
186+
) {
192187
Icon(Icons.Filled.Code, contentDescription = "See code")
193188
Text(
194189
modifier = Modifier.padding(start = 8.dp),

ai-catalog/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/VideoSummarizationScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ fun VideoSummarizationScreen(viewModel: VideoSummarizationViewModel = hiltViewMo
135135
}) { innerPadding ->
136136
Column(
137137
modifier = Modifier
138-
.padding(18.dp)
138+
.padding(12.dp)
139139
.padding(innerPadding)
140140
) {
141141
Spacer(modifier = Modifier.height(16.dp))

ai-catalog/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/ui/TextToSpeechControls.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.compose.material3.Icon
1616
import androidx.compose.material3.OutlinedTextField
1717
import androidx.compose.material3.Text
1818
import androidx.compose.runtime.Composable
19+
import androidx.compose.ui.Alignment
1920
import androidx.compose.ui.Modifier
2021
import androidx.compose.ui.res.stringResource
2122
import androidx.compose.ui.unit.dp
@@ -47,7 +48,9 @@ fun TextToSpeechControls(
4748
) {
4849

4950
Row(
50-
modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween
51+
modifier = Modifier.fillMaxWidth(),
52+
horizontalArrangement = Arrangement.SpaceBetween,
53+
verticalAlignment = Alignment.CenterVertically
5154
) {
5255
OutlinedTextField(value = selectedAccent.displayLanguage,
5356
onValueChange = { },

ai-catalog/samples/genai-image-description/src/main/java/com/android/ai/samples/genai_image_description/GenAIImageDescriptionScreen.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package com.android.ai.samples.genai_image_description
1919

2020
import android.net.Uri
21-
import android.provider.MediaStore
2221
import androidx.activity.compose.rememberLauncherForActivityResult
2322
import androidx.activity.result.PickVisualMediaRequest
2423
import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia
@@ -148,7 +147,7 @@ fun GenAIImageDescriptionScreen(viewModel: GenAIImageDescriptionViewModel = hilt
148147
) {
149148
Text(
150149
text = imageDescriptionResult.value,
151-
modifier = Modifier.padding(10.dp)
150+
modifier = Modifier.padding(top = 8.dp, bottom = 24.dp, start = 24.dp, end = 24.dp)
152151
)
153152
}
154153
}

ai-catalog/samples/genai-summarization/src/main/java/com/android/ai/samples/genai_summarization/GenAISummarizationScreen.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import androidx.compose.foundation.layout.Row
2323
import androidx.compose.foundation.layout.fillMaxSize
2424
import androidx.compose.foundation.layout.fillMaxWidth
2525
import androidx.compose.foundation.layout.padding
26+
import androidx.compose.foundation.rememberScrollState
27+
import androidx.compose.foundation.verticalScroll
2628
import androidx.compose.material3.Button
2729
import androidx.compose.material3.ButtonDefaults
2830
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -74,7 +76,9 @@ fun GenAISummarizationScreen(viewModel: GenAISummarizationViewModel = hiltViewMo
7476
}) { innerPadding ->
7577

7678
Column(
77-
modifier = Modifier.padding(innerPadding)
79+
Modifier
80+
.padding(12.dp)
81+
.padding(innerPadding)
7882
) {
7983
// Text input box
8084
TextField(
@@ -130,7 +134,7 @@ fun GenAISummarizationScreen(viewModel: GenAISummarizationViewModel = hiltViewMo
130134
) {
131135
Text(
132136
text = summarizationResult.value,
133-
modifier = Modifier.padding(10.dp)
137+
modifier = Modifier.padding(top = 8.dp, bottom = 24.dp, start = 24.dp, end = 24.dp)
134138
)
135139
}
136140
}

ai-catalog/samples/genai-writing-assistance/src/main/java/com/android/ai/samples/genai_writing_assistance/GenAIWritingAssistanceScreen.kt

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@ import androidx.compose.foundation.layout.fillMaxSize
2525
import androidx.compose.foundation.layout.fillMaxWidth
2626
import androidx.compose.foundation.layout.height
2727
import androidx.compose.foundation.layout.padding
28+
import androidx.compose.foundation.rememberScrollState
2829
import androidx.compose.foundation.selection.selectable
2930
import androidx.compose.foundation.selection.selectableGroup
3031
import androidx.compose.foundation.shape.RoundedCornerShape
32+
import androidx.compose.foundation.verticalScroll
3133
import androidx.compose.material3.Button
3234
import androidx.compose.material3.ButtonDefaults
3335
import androidx.compose.material3.Card
@@ -91,7 +93,9 @@ fun GenAIWritingAssistanceScreen(viewModel: GenAIWritingAssistanceViewModel = hi
9193
}) { innerPadding ->
9294

9395
Column(
94-
modifier = Modifier.padding(innerPadding)
96+
Modifier
97+
.padding(12.dp)
98+
.padding(innerPadding)
9599
) {
96100
// Text input box
97101
TextField(
@@ -103,47 +107,43 @@ fun GenAIWritingAssistanceScreen(viewModel: GenAIWritingAssistanceViewModel = hi
103107
.weight(.8f)
104108
)
105109

106-
Box(
107-
modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center
108-
) {
109-
Row {
110-
// Proofread button
111-
MainButton(
112-
buttonText = stringResource(id = R.string.genai_writing_assistance_proofread_btn),
113-
onClick = {
114-
showBottomSheet = true
115-
viewModel.proofread(textInput, context)
116-
})
110+
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.Center) {
111+
// Proofread button
112+
MainButton(
113+
buttonText = stringResource(id = R.string.genai_writing_assistance_proofread_btn),
114+
onClick = {
115+
showBottomSheet = true
116+
viewModel.proofread(textInput, context)
117+
})
117118

118-
// Rewrite button
119-
MainButton(
120-
buttonText = stringResource(id = R.string.genai_writing_assistance_rewrite_btn),
121-
onClick = {
122-
showRewriteOptionsDialog = true
123-
})
124-
}
119+
// Rewrite button
120+
MainButton(
121+
buttonText = stringResource(id = R.string.genai_writing_assistance_rewrite_btn),
122+
onClick = {
123+
showRewriteOptionsDialog = true
124+
})
125125
}
126126

127127
// Extra options buttons
128-
Box(
129-
modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center
128+
Row(
129+
modifier = Modifier.fillMaxWidth(),
130+
horizontalArrangement = Arrangement.Center,
131+
verticalAlignment = Alignment.CenterVertically,
130132
) {
131-
Row {
132-
SecondaryButton(
133-
buttonText = stringResource(id = R.string.genai_writing_assistance_proofread_sample_text_btn),
134-
onClick = { textInput = proofreadSampleTextOptions.random() },
135-
)
133+
SecondaryButton(
134+
buttonText = stringResource(id = R.string.genai_writing_assistance_proofread_sample_text_btn),
135+
onClick = { textInput = proofreadSampleTextOptions.random() },
136+
)
136137

137-
SecondaryButton(
138-
buttonText = stringResource(id = R.string.genai_writing_assistance_rewrite_sample_text_btn),
139-
onClick = { textInput = rewriteSampleTextOptions.random() }
140-
)
138+
SecondaryButton(
139+
buttonText = stringResource(id = R.string.genai_writing_assistance_rewrite_sample_text_btn),
140+
onClick = { textInput = rewriteSampleTextOptions.random() }
141+
)
141142

142-
SecondaryButton(
143-
buttonText = stringResource(id = R.string.genai_writing_assistance_reset_btn),
144-
onClick = { textInput = "" }
145-
)
146-
}
143+
SecondaryButton(
144+
buttonText = stringResource(id = R.string.genai_writing_assistance_reset_btn),
145+
onClick = { textInput = "" }
146+
)
147147
}
148148
}
149149

@@ -157,7 +157,7 @@ fun GenAIWritingAssistanceScreen(viewModel: GenAIWritingAssistanceViewModel = hi
157157
) {
158158
Text(
159159
text = resultGenerated.value,
160-
modifier = Modifier.padding(10.dp)
160+
modifier = Modifier.padding(top = 8.dp, bottom = 24.dp, start = 24.dp, end = 24.dp)
161161
)
162162
}
163163
}

ai-catalog/samples/genai-writing-assistance/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<string name="genai_writing_assistance_rewrite_btn">Rewrite</string>
77
<string name="genai_writing_assistance_dismiss_btn">Dismiss</string>
88
<string name="genai_writing_assistance_confirm_btn">Confirm</string>
9-
<string name="genai_writing_assistance_proofread_sample_text_btn">Add text \nto proofread</string>
9+
<string name="genai_writing_assistance_proofread_sample_text_btn">Add text to \n proofread</string>
1010
<string name="genai_writing_assistance_rewrite_sample_text_btn">Add text \nto rewrite</string>
1111
<string-array name="proofread_sample_text">
1212
<item>@string/genai_proofread_sample_text_1</item>

0 commit comments

Comments
 (0)