Skip to content

Commit 023e3bb

Browse files
committed
Animate "Due" on desktop
1 parent dbfaf9a commit 023e3bb

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

desktop/src/main/kotlin/com/jdamcd/arrivals/desktop/ArrivalsView.kt

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package com.jdamcd.arrivals.desktop
22

3+
import androidx.compose.animation.core.LinearEasing
4+
import androidx.compose.animation.core.RepeatMode
5+
import androidx.compose.animation.core.animateFloat
6+
import androidx.compose.animation.core.infiniteRepeatable
7+
import androidx.compose.animation.core.rememberInfiniteTransition
8+
import androidx.compose.animation.core.tween
39
import androidx.compose.foundation.background
410
import androidx.compose.foundation.layout.Arrangement
511
import androidx.compose.foundation.layout.Box
@@ -11,6 +17,7 @@ import androidx.compose.foundation.layout.padding
1117
import androidx.compose.material.CircularProgressIndicator
1218
import androidx.compose.material.Text
1319
import androidx.compose.runtime.Composable
20+
import androidx.compose.runtime.getValue
1421
import androidx.compose.ui.Alignment
1522
import androidx.compose.ui.Modifier
1623
import androidx.compose.ui.text.TextStyle
@@ -19,7 +26,7 @@ import androidx.compose.ui.unit.sp
1926
import com.jdamcd.arrivals.Arrival
2027

2128
@Composable
22-
fun ArrivalsList(
29+
fun ArrivalsView(
2330
state: ArrivalsState
2431
) {
2532
Column(
@@ -93,7 +100,11 @@ fun ArrivalRow(arrival: Arrival) {
93100
modifier = Modifier.fillMaxWidth()
94101
) {
95102
LedText(arrival.destination)
96-
LedText(arrival.time)
103+
if (arrival.secondsToStop < 60) {
104+
FlashingLedText(arrival.time)
105+
} else {
106+
LedText(arrival.time)
107+
}
97108
}
98109
}
99110

@@ -108,3 +119,24 @@ fun LedText(string: String) {
108119
)
109120
)
110121
}
122+
123+
@Composable
124+
fun FlashingLedText(string: String) {
125+
val infiniteTransition = rememberInfiniteTransition()
126+
val alpha by infiniteTransition.animateFloat(
127+
initialValue = 0f,
128+
targetValue = 1f,
129+
animationSpec = infiniteRepeatable(
130+
animation = tween(durationMillis = 750, easing = LinearEasing),
131+
repeatMode = RepeatMode.Reverse
132+
)
133+
)
134+
Text(
135+
text = string,
136+
color = LedYellow.copy(alpha = alpha),
137+
style = TextStyle(
138+
fontFamily = LurFontFamily,
139+
fontSize = 52.sp
140+
)
141+
)
142+
}

desktop/src/main/kotlin/com/jdamcd/arrivals/desktop/Main.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ fun main() = application {
2828
state = windowState,
2929
title = "Arrivals"
3030
) {
31-
ArrivalsList(state)
31+
ArrivalsView(state)
3232
}
3333
}

0 commit comments

Comments
 (0)