【发布时间】:2022-01-04 03:47:28
【问题描述】:
我希望在 Jetpack Compose 的画布上画一条弧线,在进度边缘有一个小圆圈,如下图所示:
我找到了如何使用弧形画布绘制进度条,但还不知道如何绘制圆形以匹配弧线的边缘。这是我的进度代码:
@Composable
fun ComposeCircularProgressBar(
modifier: Modifier = Modifier,
percentage: Float,
fillColor: Color,
backgroundColor: Color,
strokeWidth: Dp
) {
Canvas(
modifier = modifier
.padding(strokeWidth / 2)
) {
// Background Line
drawArc(
color = backgroundColor,
135f,
270f,
false,
style = Stroke(strokeWidth.toPx(), cap = StrokeCap.Butt)
)
// Fill Line
drawArc(
color = fillColor,
135f,
270f * percentage,
false,
style = Stroke(strokeWidth.toPx(), cap = StrokeCap.Round)
)
}
}
注意:目前我知道用Canvas.drawCircle(offset = Offset) 绘制那个圆圈,但我还不知道如何计算Offset(x,y) 以匹配进度的边缘。
【问题讨论】:
-
这与compose无关,只是一道数学题,例如见this answer
标签: android kotlin android-canvas android-jetpack-compose