在 Jetpack compose 中绘制圆形动画

时间:2021-04-13 18:30:25

标签: android kotlin android-jetpack-compose

我正在尝试使用 drawCircle 上的 Canvas 为圆形绘制动画,如下所示:

 drawCircle(
     color = Color.Black,
     radius = 200f * animatableCircle.value,
     center = Offset(size.width / 4, size.height / 4),
     style = Stroke(2f)
)

enter image description here 它看起来不像是画圆,而是圆开始从中心缩放。是否可以实现如图所示的沿半径类似于 CircularProgressIndicator 的圆形绘制效果? enter image description here

2 个答案:

答案 0 :(得分:2)

使用 drawArc 如下,

 drawArc(
     color = Color.Black,
     startAngle = 0f,
     sweepAngle = 360f * animatableCircle.value,
     useCenter = false,
     topLeft = Offset(size.width / 4, size.height / 4),
     size = Size(CIRCLE_RADIUS * 2 ,
                 CIRCLE_RADIUS * 2),
     style = Stroke(2.0f))

答案 1 :(得分:1)

只是为了完成@Varsha Kulkarni发布的代码:(+1)

    val radius = 200f
    val animateFloat = remember { Animatable(0f) }
    LaunchedEffect(animateFloat) {
        animateFloat.animateTo(
            targetValue = 1f,
            animationSpec = tween(durationMillis = 3000, easing = LinearEasing))
    }

   Canvas(modifier = Modifier.fillMaxSize()){
       drawArc(
           color = Color.Black,
           startAngle = 0f,
           sweepAngle = 360f * animateFloat.value,
           useCenter = false,
           topLeft = Offset(size.width / 4, size.height / 4),
           size = Size(radius * 2 ,
               radius * 2),
           style = Stroke(2.0f))
   }

enter image description here