我试图创建一个标签,将作为一个标签添加时,添加一个新的项目,所以我想这个标签把文本“新”,并在4秒后,它转换成一个圆圈的标签(作为一个通知徽章图标)我已经尝试过的是:
@Composable
internal fun AnimatedNewLabel() {
var showText by remember { mutableStateOf("New") }
var padding by remember { mutableStateOf(8.dp) }
Text(
modifier = Modifier
.drawBehind {
drawCircle(
color = Color.Red,
radius = this.size.maxDimension,
)
}
.padding(start = 8.dp, top = 8.dp, end = 12.dp, bottom = 8.dp),
text = showText,
textAlign = TextAlign.Center,
maxLines = 1,
fontSize = 14.sp,
lineHeight = 20.sp,
fontWeight = FontWeight.Normal,
)
LaunchedEffect(Unit) {
delay(4000)
showText = ""
padding = 0.dp
}
}
但是看起来并不顺利,有没有其他的方法来做到这一点?我已经检查过autoseText也有一个修饰符,但不知道这是否是他们使用的方式。
1条答案
按热度按时间qnzebej01#
要使其平滑,您必须使用“合成”的动画辅助工具来设置大小或颜色的动画。这个Codelab Animation in Compose很棒。
这有点难以理解你的要求,但这是一个文本动画平滑到一个圆圈的例子,根据你的需要进行调整:animateDpAsState将动态显示0到40的dp大小。