小编Den*_*ean的帖子

Jetpack 用点圆绘制圆弧

我希望在 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)
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:目前我知道绘制那个圆圈,Canvas.drawCircle(offset = Offset)但我还不知道如何计算Offset(x,y)与进度边缘相匹配。

android android-canvas kotlin android-jetpack-compose

13
推荐指数
1
解决办法
5631
查看次数