radar-circle-animation
radar-circle-animation
rating
import androidx.compose.animation.core.LinearEasing
import androidx.compose.animation.core.LinearOutSlowInEasing
import androidx.compose.animation.core.RepeatMode
import androidx.compose.animation.core.animateFloat
import androidx.compose.animation.core.infiniteRepeatable
import androidx.compose.animation.core.keyframes
import androidx.compose.animation.core.rememberInfiniteTransition
import androidx.compose.animation.core.tween
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Rect
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Path
import androidx.compose.ui.graphics.drawscope.rotate
import androidx.compose.ui.unit.dp
@Composable
fun RadarAnimation(modifier: Modifier = Modifier) {
val infiniteTransition = rememberInfiniteTransition()
RadarCanvas(
modifier = modifier,
rotationAngle = rotationAngle,
pulseRadius = pulseRadius
)
}
@Composable
fun RadarCanvas(
modifier: Modifier,
rotationAngle: Float,
pulseRadius: Float
) {
Canvas(modifier = modifier) {
val midPoint = size.width / 2f
// Cross lines
drawLine(
start = Offset(midPoint, midPoint),
end = Offset(size.width, midPoint),
color = Color.LightGray,
strokeWidth = 2f
)
drawLine(
start = Offset(midPoint, midPoint),
end = Offset(midPoint, 0f),
color = Color.LightGray,
strokeWidth = 2f
)
// Pulsating circle
drawCircle(
color = Color.Green.copy(alpha = 0.3f),
radius = pulseRadius,
center = Offset(midPoint, midPoint)
)
}
}