所以我正在try 做一个简单的应用程序,将 colored颜色 更改为红色或绿色,并在价格波动时恢复为黑色,我目前的实现是这样的
@Composable
fun LaunchingComposable() {
var coinPrice by remember {
mutableStateOf(2000.30)
}
CoinHeader(modifier = Modifier.padding(horizontal = 8.dp),
"http://myicon.com/image.png",
coinPrice
)
LaunchedEffect(Unit) {
delay(3000)
coinPrice = 2000.40
delay(3000)
coinPrice = 2000.20
delay(3000)
coinPrice = 2000.10
delay(3000)
coinPrice = 2000.20
}
}
...
@Composable
fun CoinHeader(modifier: Modifier, coinImageUrl: String, currentPrice: Double) {
val baseColor = remember { Animatable(Black) }
val previousPrice = remember {
currentPrice
}
Row(
modifier = modifier,
horizontalArrangement = Arrangement.Start,
verticalAlignment = Alignment.CenterVertically
) {
AsyncImage(
modifier = Modifier
.width(30.dp)
.height(30.dp)
.padding(end = 4.dp)
.data(coinImageUrl)
.build()
)
LaunchedEffect(currentPrice) {
if (previousPrice < currentPrice) {
baseColor.animateTo(Red, animationSpec = tween(1000))
} else {
baseColor.animateTo(Green, animationSpec = tween(1000))
}
baseColor.animateTo(Black, animationSpec = tween(1000))
}
Text(text = currentPrice.toPrice(), color = baseColor.targetValue)
}
}
在我的上一个作曲中,我预计值将更改为Green - Red - Red - Green
我需要总是存储我的硬币价格的前值,以便比较它,做一个褪色动画与 colored颜色 ,然后返回到黑色.
目前,这是我的输出
问题有2个
- 不会发生从红色到黑色或从绿色到黑色的淡入淡出
- 似乎总是与第一个值进行比较
有没有人能解释一下,如果我在更改了CoinPrice之后重新组合,为什么之前的值设置不正确?