如何将android.graphics.Color转换为androidx.compose.ui.graphics.Color

如何将android.graphics.Color转换为androidx.compose.ui.graphics.Color,android,android-jetpack-compose,Android,Android Jetpack Compose,我正在画一个JetpackComposeCanvas Canvas(modifier = modifier.clipToBounds()) { val colorEvaluator = ArgbEvaluator() colorEvaluator.evaluate(t, Color.Red, Color.Blue) drawCircle( style = Stroke(8.dp.toPx()),

我正在画一个JetpackCompose
Canvas

    Canvas(modifier = modifier.clipToBounds()) {
        val colorEvaluator = ArgbEvaluator()
        colorEvaluator.evaluate(t, Color.Red, Color.Blue)
        drawCircle(
            style = Stroke(8.dp.toPx()),
            color = AndroidColor.valueOf(colorEvaluator.evaluate(t, Color.Red, Color.Blue) as Int),
            center = Offset(size.minDimension/2 , size.minDimension/2),
            radius = size.minDimension * t)
        drawRect(
            color = darkColor,
            style = Stroke(16.dp.toPx()),
        )
    }
在哪里

我在
color=AndroidColor.valueOf(colorEvaluator.evaluate(t,color.Red,color.Blue)作为Int)上得到了这个错误,
错误消息在哪里

Type mismatch.
Required:
androidx.compose.ui.graphics.Color
Found:
android.graphics.Color

看起来我应该向argbeevaluator提供
AndroidColor.RED
AndroidColor.BLUE
,而不是意外地使用
Compose的
颜色

其中
AndroidColor
导入android.graphics.Color作为AndroidColor

    Canvas(modifier = modifier.clipToBounds()) {
        drawCircle(
            style = Stroke(8.dp.toPx()),
            color = Color(ArgbEvaluator().evaluate(t, AndroidColor.RED, AndroidColor.BLUE) as Int),
            center = Offset(size.minDimension / 2, size.minDimension / 2),
            radius = size.minDimension * t
        )
        drawRect(
            color = darkColor,
            style = Stroke(16.dp.toPx()),
        )
    }
已更新

找到了一个更好的方法,那就是按照下面的代码在
compose
中使用
lerp
。使用这种方法,我们不再需要使用旧的
argbeevaluator

    Canvas(modifier = modifier.clipToBounds()) {
        drawCircle(
            style = Stroke(8.dp.toPx()),
            color = lerp(Color.Red, Color.Blue, t),
            center = Offset(size.minDimension / 2, size.minDimension / 2),
            radius = size.minDimension * t
        )
        drawRect(
            color = darkColor,
            style = Stroke(16.dp.toPx()),
        )
    }

读取错误。使用您的
颜色
,而不是
AndroidColor
。也检查一下。尝试调试以查看
colorEvaluator的结果类型。evaluate
@Nicolas:根据
AndroidColor
@Elye:由于正在设置Compose UI以支持跨平台使用,因此需要在某处提供一个扩展函数来在
颜色
类型之间进行转换。我不知道有没有内置的。因此,您可能需要自己编写,或者考虑移植<代码> AgBealValue(它是),这样您就可以始终坚持撰写<代码>颜色< /代码>。
    Canvas(modifier = modifier.clipToBounds()) {
        drawCircle(
            style = Stroke(8.dp.toPx()),
            color = lerp(Color.Red, Color.Blue, t),
            center = Offset(size.minDimension / 2, size.minDimension / 2),
            radius = size.minDimension * t
        )
        drawRect(
            color = darkColor,
            style = Stroke(16.dp.toPx()),
        )
    }