andrew
03/07/2022, 12:40 AMandrew
03/07/2022, 12:40 AMandrew
03/07/2022, 12:42 AMSemir Rahic
03/07/2022, 5:54 AMandrew
03/07/2022, 6:55 AMKamilH
03/07/2022, 7:05 AMandrew
03/07/2022, 11:56 PMildar.i [Android]
03/08/2022, 7:16 AMste
03/08/2022, 3:25 PMandrew
03/08/2022, 4:17 PMEric Chee
03/09/2022, 1:54 AMandrew
03/09/2022, 2:04 AMandrew
03/09/2022, 2:05 AM@Composable
fun Pulse(
modifier: Modifier = Modifier,
tint: Color = LocalContentColor.current,
active: Boolean = true,
bounded: Boolean = true,
count: Int = 3,
duration: Int = 1000,
) {
if (!active) return
val infiniteTransition = rememberInfiniteTransition()
val pulses = buildList {
for (i in 0 until count) {
add(infiniteTransition.animateFloat(
initialValue = 0F,
targetValue = 1F,
animationSpec = infiniteRepeatable(
animation = tween(duration * count, easing = FastOutSlowInEasing),
initialStartOffset = StartOffset(i * duration),
)
))
}
}
Canvas(modifier.then(if (bounded) Modifier.clipToBounds() else Modifier)) {
val (a, b) = size
val r = sqrt(a.pow(2) + b.pow(2)) / 2
pulses.forEach {
val progress = it.value
scale(progress) {
drawCircle(color.copy(alpha = (1F - progress) * 0.12F), r)
}
}
}
}
andrew
03/09/2022, 2:05 AMMarcin Wisniowski
03/09/2022, 2:05 AMandrew
03/09/2022, 2:07 AMandrew
03/09/2022, 2:08 AMMarcin Wisniowski
03/09/2022, 2:14 AMandrew
03/09/2022, 2:15 AM