Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 96c9610

Browse files
authoredFeb 1, 2021
Merge pull request android#367 from android/nb/js_alpha11
[Jetsnack] Update to alpha11.
2 parents 8c695d9 + d160874 commit 96c9610

File tree

20 files changed

+153
-95
lines changed

20 files changed

+153
-95
lines changed
 

‎Jetsnack/app/src/main/java/com/example/jetsnack/model/Snack.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ val snacks = listOf(
7979
id = 7L,
8080
name = "Ice Cream Sandwich",
8181
tagline = "A tag line",
82-
imageUrl = "https://source.unsplash.com/AqorcpZIKnU",
82+
imageUrl = "https://source.unsplash.com/YgYJsFDd4AU",
8383
price = 1299
8484
),
8585
Snack(

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Filters.kt

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616

1717
package com.example.jetsnack.ui.components
1818

19-
import androidx.compose.animation.animateAsState
20-
import androidx.compose.foundation.ScrollableRow
19+
import androidx.compose.animation.animateColorAsState
20+
import androidx.compose.foundation.layout.Arrangement
2121
import androidx.compose.foundation.layout.Box
22-
import androidx.compose.foundation.layout.Spacer
22+
import androidx.compose.foundation.layout.PaddingValues
2323
import androidx.compose.foundation.layout.padding
2424
import androidx.compose.foundation.layout.preferredHeight
2525
import androidx.compose.foundation.layout.preferredHeightIn
26-
import androidx.compose.foundation.layout.preferredWidth
26+
import androidx.compose.foundation.lazy.LazyRow
27+
import androidx.compose.foundation.lazy.items
2728
import androidx.compose.foundation.selection.toggleable
2829
import androidx.compose.foundation.shape.CircleShape
2930
import androidx.compose.material.Icon
@@ -37,34 +38,35 @@ import androidx.compose.runtime.getValue
3738
import androidx.compose.ui.Alignment
3839
import androidx.compose.ui.Modifier
3940
import androidx.compose.ui.graphics.Shape
41+
import androidx.compose.ui.res.stringResource
4042
import androidx.compose.ui.unit.dp
43+
import com.example.jetsnack.R
4144
import com.example.jetsnack.model.Filter
4245
import com.example.jetsnack.ui.theme.JetsnackTheme
4346

4447
@Composable
4548
fun FilterBar(filters: List<Filter>) {
46-
ScrollableRow(modifier = Modifier.preferredHeightIn(min = 56.dp)) {
47-
Spacer(Modifier.preferredWidth(8.dp))
48-
IconButton(
49-
onClick = { /* todo */ },
50-
modifier = Modifier.align(Alignment.CenterVertically)
51-
) {
52-
Icon(
53-
imageVector = Icons.Rounded.FilterList,
54-
tint = JetsnackTheme.colors.brand,
55-
modifier = Modifier.diagonalGradientBorder(
56-
colors = JetsnackTheme.colors.interactiveSecondary,
57-
shape = CircleShape
49+
LazyRow(
50+
verticalAlignment = Alignment.CenterVertically,
51+
horizontalArrangement = Arrangement.spacedBy(8.dp),
52+
contentPadding = PaddingValues(start = 8.dp, end = 8.dp),
53+
modifier = Modifier.preferredHeightIn(min = 56.dp)
54+
) {
55+
item {
56+
IconButton(onClick = { /* todo */ }) {
57+
Icon(
58+
imageVector = Icons.Rounded.FilterList,
59+
tint = JetsnackTheme.colors.brand,
60+
contentDescription = stringResource(R.string.label_filters),
61+
modifier = Modifier.diagonalGradientBorder(
62+
colors = JetsnackTheme.colors.interactiveSecondary,
63+
shape = CircleShape
64+
)
5865
)
59-
)
66+
}
6067
}
61-
62-
filters.forEach { filter ->
63-
FilterChip(
64-
filter = filter,
65-
modifier = Modifier.align(Alignment.CenterVertically)
66-
)
67-
Spacer(Modifier.preferredWidth(8.dp))
68+
items(filters) { filter ->
69+
FilterChip(filter)
6870
}
6971
}
7072
}
@@ -76,15 +78,15 @@ fun FilterChip(
7678
shape: Shape = MaterialTheme.shapes.small
7779
) {
7880
val (selected, setSelected) = filter.enabled
79-
val backgroundColor by animateAsState(
81+
val backgroundColor by animateColorAsState(
8082
if (selected) JetsnackTheme.colors.brand else JetsnackTheme.colors.uiBackground
8183
)
8284
val border = Modifier.fadeInDiagonalGradientBorder(
8385
showBorder = !selected,
8486
colors = JetsnackTheme.colors.interactiveSecondary,
8587
shape = shape
8688
)
87-
val textColor by animateAsState(
89+
val textColor by animateColorAsState(
8890
if (selected) JetsnackTheme.colors.textInteractive else JetsnackTheme.colors.textSecondary
8991
)
9092
JetsnackSurface(

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Gradient.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package com.example.jetsnack.ui.components
1818

19-
import androidx.compose.animation.animateAsState
19+
import androidx.compose.animation.animateColorAsState
2020
import androidx.compose.foundation.background
2121
import androidx.compose.foundation.border
2222
import androidx.compose.ui.Modifier
@@ -71,7 +71,7 @@ fun Modifier.fadeInDiagonalGradientBorder(
7171
shape: Shape
7272
) = composed {
7373
val animatedColors = List(colors.size) { i ->
74-
animateAsState(if (showBorder) colors[i] else colors[i].copy(alpha = 0f)).value
74+
animateColorAsState(if (showBorder) colors[i] else colors[i].copy(alpha = 0f)).value
7575
}
7676
diagonalGradientBorder(
7777
colors = animatedColors,

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/GradientTintedIconButton.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import com.example.jetsnack.ui.theme.JetsnackTheme
2929
fun JetsnackGradientTintedIconButton(
3030
imageVector: ImageVector,
3131
onClick: () -> Unit,
32+
contentDescription: String?,
3233
modifier: Modifier = Modifier,
3334
colors: List<Color> = JetsnackTheme.colors.interactiveSecondary
3435
) {
@@ -37,6 +38,7 @@ fun JetsnackGradientTintedIconButton(
3738
IconButton(onClick = onClick, modifier) {
3839
Icon(
3940
imageVector = imageVector,
41+
contentDescription = contentDescription,
4042
modifier = Modifier.diagonalGradientTint(
4143
colors = colors,
4244
blendMode = blendMode

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/QuantitySelector.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ fun QuantitySelector(
6262
JetsnackGradientTintedIconButton(
6363
imageVector = Icons.Outlined.RemoveCircleOutline,
6464
onClick = decreaseItemCount,
65+
contentDescription = stringResource(R.string.label_decrease),
6566
modifier = Modifier.constrainAs(minus) {
6667
centerVerticallyTo(quantity)
6768
linkTo(top = parent.top, bottom = parent.bottom)
@@ -84,6 +85,7 @@ fun QuantitySelector(
8485
JetsnackGradientTintedIconButton(
8586
imageVector = Icons.Outlined.AddCircleOutline,
8687
onClick = increaseItemCount,
88+
contentDescription = stringResource(R.string.label_increase),
8789
modifier = Modifier.constrainAs(plus) {
8890
end.linkTo(parent.end)
8991
centerVerticallyTo(quantity)

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Snacks.kt

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
package com.example.jetsnack.ui.components
1818

19-
import androidx.compose.foundation.ScrollableRow
2019
import androidx.compose.foundation.clickable
20+
import androidx.compose.foundation.layout.Arrangement
2121
import androidx.compose.foundation.layout.Box
2222
import androidx.compose.foundation.layout.Column
2323
import androidx.compose.foundation.layout.PaddingValues
@@ -29,9 +29,10 @@ import androidx.compose.foundation.layout.padding
2929
import androidx.compose.foundation.layout.preferredHeight
3030
import androidx.compose.foundation.layout.preferredHeightIn
3131
import androidx.compose.foundation.layout.preferredSize
32-
import androidx.compose.foundation.layout.preferredWidth
3332
import androidx.compose.foundation.layout.wrapContentWidth
3433
import androidx.compose.foundation.lazy.LazyRow
34+
import androidx.compose.foundation.lazy.items
35+
import androidx.compose.foundation.lazy.itemsIndexed
3536
import androidx.compose.foundation.rememberScrollState
3637
import androidx.compose.foundation.shape.CircleShape
3738
import androidx.compose.material.Icon
@@ -98,7 +99,8 @@ fun SnackCollection(
9899
) {
99100
Icon(
100101
imageVector = Icons.Outlined.ArrowForward,
101-
tint = JetsnackTheme.colors.brand
102+
tint = JetsnackTheme.colors.brand,
103+
contentDescription = null
102104
)
103105
}
104106
}
@@ -126,14 +128,20 @@ private fun HighlightedSnacks(
126128
val gradientWidth = with(AmbientDensity.current) {
127129
(3 * (HighlightCardWidth + HighlightCardPadding).toPx())
128130
}
129-
ScrollableRow(
130-
scrollState = scroll,
131-
modifier = modifier
131+
LazyRow(
132+
modifier = modifier,
133+
horizontalArrangement = Arrangement.spacedBy(16.dp),
134+
contentPadding = PaddingValues(start = 16.dp, end = 16.dp)
132135
) {
133-
Spacer(modifier = Modifier.preferredWidth(24.dp))
134-
snacks.forEachIndexed { index, snack ->
135-
HighlightSnackItem(snack, onSnackClick, index, gradient, gradientWidth, scroll.value)
136-
Spacer(modifier = Modifier.preferredWidth(16.dp))
136+
itemsIndexed(snacks) { index, snack ->
137+
HighlightSnackItem(
138+
snack,
139+
onSnackClick,
140+
index,
141+
gradient,
142+
gradientWidth,
143+
scroll.value
144+
)
137145
}
138146
}
139147
}
@@ -177,6 +185,7 @@ fun SnackItem(
177185
SnackImage(
178186
imageUrl = snack.imageUrl,
179187
elevation = 4.dp,
188+
contentDescription = null,
180189
modifier = Modifier.preferredSize(120.dp)
181190
)
182191
Text(
@@ -230,6 +239,7 @@ private fun HighlightSnackItem(
230239
)
231240
SnackImage(
232241
imageUrl = snack.imageUrl,
242+
contentDescription = null,
233243
modifier = Modifier
234244
.preferredSize(120.dp)
235245
.align(Alignment.BottomCenter)
@@ -258,6 +268,7 @@ private fun HighlightSnackItem(
258268
@Composable
259269
fun SnackImage(
260270
imageUrl: String,
271+
contentDescription: String?,
261272
modifier: Modifier = Modifier,
262273
elevation: Dp = 0.dp
263274
) {
@@ -269,6 +280,7 @@ fun SnackImage(
269280
) {
270281
CoilImage(
271282
data = imageUrl,
283+
contentDescription = contentDescription,
272284
contentScale = ContentScale.Crop,
273285
modifier = Modifier.fillMaxSize()
274286
)

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/DestinationBar.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@ import androidx.compose.material.icons.outlined.ExpandMore
2727
import androidx.compose.runtime.Composable
2828
import androidx.compose.ui.Alignment
2929
import androidx.compose.ui.Modifier
30+
import androidx.compose.ui.res.stringResource
3031
import androidx.compose.ui.text.style.TextAlign
3132
import androidx.compose.ui.text.style.TextOverflow
3233
import androidx.compose.ui.unit.dp
34+
import com.example.jetsnack.R
3335
import com.example.jetsnack.ui.components.JetsnackDivider
3436
import com.example.jetsnack.ui.theme.AlphaNearOpaque
3537
import com.example.jetsnack.ui.theme.JetsnackTheme
@@ -60,7 +62,8 @@ fun DestinationBar(modifier: Modifier = Modifier) {
6062
) {
6163
Icon(
6264
imageVector = Icons.Outlined.ExpandMore,
63-
tint = JetsnackTheme.colors.brand
65+
tint = JetsnackTheme.colors.brand,
66+
contentDescription = stringResource(R.string.label_select_delivery)
6467
)
6568
}
6669
}

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/Feed.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.compose.foundation.layout.Box
2020
import androidx.compose.foundation.layout.Spacer
2121
import androidx.compose.foundation.layout.fillMaxSize
2222
import androidx.compose.foundation.lazy.LazyColumn
23+
import androidx.compose.foundation.lazy.itemsIndexed
2324
import androidx.compose.runtime.Composable
2425
import androidx.compose.runtime.remember
2526
import androidx.compose.ui.Modifier

0 commit comments

Comments
 (0)