如何将android.graphics.Color转换为androidx.compose.ui.graphics.Color
我正在画一个JetpackCompose如何将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()),
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()),
)
}