我正在画一个 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()),
)
}
在哪里import androidx.compose.ui.graphics.Color
import android.graphics.Color as AndroidColor
我在 color = AndroidColor.valueOf(colorEvaluator.evaluate(t, Color.Red, Color.Blue) as Int),
上收到此错误错误消息在哪里Type mismatch.
Required:
androidx.compose.ui.graphics.Color
Found:
android.graphics.Color
最佳答案
看来我应该提供 AndroidColor.RED
和 AndroidColor.BLUE
到 ArgbEvaluator 而不是意外使用 Color
的 Compose
在哪里 AndroidColor
是 import android.graphics.Color as 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()),
)
}
更新 找到了一个更好的方法,那就是使用
lerp
在 compose
按照下面的代码。使用这种方法,我们不再需要使用旧的 ArgbEvaluator
. 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()),
)
}
关于android - 如何将 android.graphics.Color 转换为 androidx.compose.ui.graphics.Color,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64303405/