radar-with-lines
radar-with-lines
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.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.withFrameNanos
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Rect
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Path
import androidx.compose.ui.graphics.drawscope.Stroke
import androidx.compose.ui.graphics.drawscope.rotate
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.delay
import kotlin.math.PI
import kotlin.math.absoluteValue
import kotlin.math.sin
@Composable
fun RadarAnimation(modifier: Modifier = Modifier) {
var rotationAngle by remember { mutableStateOf(0f) }
var pulseRadius by remember { mutableStateOf(0f) }
LaunchedEffect(Unit) {
while (true) {
delay(16) // Approx. 60 FPS
rotationAngle += 1f
}
}
RadarCanvas(
modifier = Modifier.size(300.dp),
rotationAngle = rotationAngle,
// pulseRadius = pulseRadius
)
@Composable
fun RadarCanvas(
modifier: Modifier = Modifier,
rotationAngle: Float
) {
Canvas(modifier = modifier.size(140.dp)) {
val midPoint = size.width / 2f // Center of the canvas
val circleRadius = size.width / 2f - 1.dp.toPx() // Adjust for border width