Skip to content

Commit a4bd784

Browse files
fix: fix stars size for all screens sizes (#616)
1 parent c160dd4 commit a4bd784

3 files changed

Lines changed: 27 additions & 15 deletions

File tree

ui/src/main/java/com/amsterdam/ui/components/RatingBar.kt

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,23 @@ import androidx.compose.foundation.layout.Arrangement
99
import androidx.compose.foundation.layout.Row
1010
import androidx.compose.foundation.layout.fillMaxWidth
1111
import androidx.compose.foundation.layout.padding
12+
import androidx.compose.foundation.layout.requiredSizeIn
1213
import androidx.compose.foundation.layout.size
1314
import androidx.compose.runtime.Composable
1415
import androidx.compose.runtime.LaunchedEffect
16+
import androidx.compose.runtime.getValue
17+
import androidx.compose.runtime.mutableStateOf
1518
import androidx.compose.runtime.remember
19+
import androidx.compose.runtime.setValue
1620
import androidx.compose.ui.Alignment
1721
import androidx.compose.ui.Modifier
1822
import androidx.compose.ui.graphics.graphicsLayer
23+
import androidx.compose.ui.layout.onSizeChanged
24+
import androidx.compose.ui.platform.LocalDensity
1925
import androidx.compose.ui.res.painterResource
2026
import androidx.compose.ui.unit.Dp
2127
import androidx.compose.ui.unit.dp
28+
import androidx.compose.ui.unit.min
2229
import com.amsterdam.designsystem.R
2330
import com.amsterdam.designsystem.components.Icon
2431
import com.amsterdam.designsystem.theme.AppTheme
@@ -31,16 +38,24 @@ fun RatingBar(
3138
modifier: Modifier = Modifier,
3239
starsCount: Int = 10,
3340
starSize: Dp = 24.dp,
34-
starsSpacing: Dp = 12.dp,
35-
useEqualSpacing: Boolean = true
41+
starsSpacing: Dp = 6.dp,
3642
) {
43+
val density = LocalDensity.current
44+
var dialogWidth by remember { mutableStateOf(0.dp) }
45+
val maxRowWidth = ((starSize.value + starsSpacing.value) * starsCount).dp
46+
val availableSpace = min(maxRowWidth, dialogWidth)
47+
val newStarSize = (availableSpace.value / starsCount * 5 / 6).dp
48+
val newStarSpacing = ((availableSpace.value - newStarSize.value * starsCount) / starsCount).dp
49+
3750
Row(
38-
modifier = modifier.fillMaxWidth().padding(horizontal = 12.dp),
39-
horizontalArrangement = if (useEqualSpacing) {
40-
Arrangement.Start
41-
} else {
42-
Arrangement.spacedBy(starsSpacing, Alignment.CenterHorizontally)
43-
}
51+
modifier = modifier
52+
.fillMaxWidth()
53+
.onSizeChanged {
54+
dialogWidth = with(density) { it.width.toDp() }
55+
}
56+
.padding(horizontal = 12.dp)
57+
.requiredSizeIn(maxWidth = dialogWidth),
58+
horizontalArrangement = Arrangement.spacedBy(newStarSpacing, Alignment.CenterHorizontally)
4459
) {
4560
repeat(starsCount) { index ->
4661
val starIndex = index + 1
@@ -50,7 +65,7 @@ fun RatingBar(
5065

5166
LaunchedEffect(key1 = selectedStarIndex) {
5267
if (isSelected) {
53-
delay(index * 50L) // delay per star
68+
delay(index * 50L)
5469
translateY.snapTo(10f)
5570
translateY.animateTo(
5671
targetValue = 0f,
@@ -71,8 +86,7 @@ fun RatingBar(
7186
tint = AppTheme.color.yellowAccent,
7287
modifier =
7388
Modifier
74-
.size(starSize)
75-
.weight(1f)
89+
.size(newStarSize)
7690
.graphicsLayer(translationY = translateY.value)
7791
.clickable(
7892
onClick = { onRatingStarChanged(starIndex) },

ui/src/main/java/com/amsterdam/ui/components/movieAndTvShowDetails/RateDialog.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ fun RateDialog(
7676
RatingBar(
7777
modifier = Modifier.padding(bottom = 24.dp),
7878
selectedStarIndex = selectedStarIndex,
79-
onRatingStarChanged = interaction::onChangeRating,
80-
useEqualSpacing = false
79+
onRatingStarChanged = interaction::onChangeRating
8180
)
8281

8382
ConfirmButton(

ui/src/main/java/com/amsterdam/ui/screens/search/keywordSearch/sections/filterDialog/FilterDialog.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,7 @@ internal fun FilterDialog(
118118
RatingBar(
119119
modifier = Modifier.padding(top = 8.dp, bottom = 12.dp),
120120
selectedStarIndex = filterState.selectedStarIndex,
121-
onRatingStarChanged = interaction::onChangeRatingStar,
122-
useEqualSpacing = false
121+
onRatingStarChanged = interaction::onChangeRatingStar
123122
)
124123
Text(
125124
text = stringResource(R.string.genre),

0 commit comments

Comments
 (0)