Skip to content

Commit 1a90905

Browse files
committed
fix timer background getting wonky on high values
1 parent b13d2db commit 1a90905

File tree

1 file changed

+25
-19
lines changed
  • app/src/main/java/com/omelan/cofi/components

1 file changed

+25
-19
lines changed

app/src/main/java/com/omelan/cofi/components/Timer.kt

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ fun Track(
6767
val widthDifference = referenceWidthForSmallOffset - strokeWidth.value
6868

6969
val proportionalOffsetChange = widthDifference *
70-
(
71-
(referenceOffsetForLargeWidth - referenceOffsetForSmallWidth) /
72-
(referenceWidthForLargeOffset - referenceWidthForSmallOffset)
73-
)
70+
(
71+
(referenceOffsetForLargeWidth - referenceOffsetForSmallWidth) /
72+
(referenceWidthForLargeOffset - referenceWidthForSmallOffset)
73+
)
7474

7575
return@derivedStateOf referenceOffsetForSmallWidth + proportionalOffsetChange
7676
}
@@ -81,23 +81,29 @@ fun Track(
8181
.progressSemantics(progress)
8282
.aspectRatio(1f),
8383
) {
84-
val startAngle = 270f
85-
val sweep = progress * 360f
84+
val progressStartAngle = 270f
85+
val progressSweep = progress * 360f
8686
val diameterOffset = stroke.width / 2
8787
val arcDimen = size.width - 2 * diameterOffset
88-
drawArc(
89-
color = backgroundColor,
90-
startAngle = sweep + startAngle + (trackOffset),
91-
sweepAngle = 360f - sweep - (trackOffset * 2),
92-
useCenter = false,
93-
topLeft = Offset(diameterOffset, diameterOffset),
94-
size = Size(arcDimen, arcDimen),
95-
style = stroke,
96-
)
88+
89+
val backgroundStart = progressStartAngle + progressSweep + trackOffset
90+
val backgroundSweep = 360f - progressSweep - trackOffset - trackOffset
91+
92+
if (backgroundSweep > 0) {
93+
drawArc(
94+
color = backgroundColor,
95+
startAngle = backgroundStart,
96+
sweepAngle = backgroundSweep,
97+
useCenter = false,
98+
topLeft = Offset(diameterOffset, diameterOffset),
99+
size = Size(arcDimen, arcDimen),
100+
style = stroke,
101+
)
102+
}
97103
drawArc(
98104
color = color,
99-
startAngle = startAngle,
100-
sweepAngle = sweep,
105+
startAngle = progressStartAngle,
106+
sweepAngle = progressSweep,
101107
useCenter = false,
102108
topLeft = Offset(diameterOffset, diameterOffset),
103109
size = Size(arcDimen, arcDimen),
@@ -248,12 +254,12 @@ fun Timer(
248254
@Preview
249255
@Composable
250256
fun TimerPreview() {
251-
val animatedProgressValue = remember { Animatable(0.5f) }
257+
val animatedProgressValue = remember { Animatable(0.98f) }
252258
Timer(
253259
currentStep = Step(
254260
id = 1,
255261
name = "ExperimentalAnimatedInsets ExperimentalAnimatedInsets " +
256-
"ExperimentalAnimatedInsets ExperimentalAnimatedInsets",
262+
"ExperimentalAnimatedInsets ExperimentalAnimatedInsets",
257263
time = 5 * 1000,
258264
type = StepType.OTHER,
259265
orderInRecipe = 0,

0 commit comments

Comments
 (0)