您可以使用rememberPainter(imageVector)获取painter,DrawScope具有painter的扩展功能。由于我们在绘制阶段设置了动画,您将只有一次重新组合。
此外,您可以设置一个固定的大小,也可以在dp中获得画家的大小,其固有大小就是可绘制对象本身的大小。
@Preview
@Composable
private fun ImageVectorAnimationSample() {
val isClicked = remember {
mutableStateOf(false)
}
val color by animateColorAsState(
targetValue = if (isClicked.value) Color.White else Color.Blue,
animationSpec = tween(durationMillis = 2000),
label = "tint"
)
val painter = rememberVectorPainter(Icons.Outlined.Home)
val dpSize = with(LocalDensity.current) {
painter.intrinsicSize.toDpSize()
}
SideEffect {
println("Composing...")
}
Box(
modifier = Modifier
// .size(dpSize)
.size(100.dp)
.drawBehind {
with(painter) {
draw(size, colorFilter = ColorFilter.tint(color))
}
}
.clickable {
isClicked.value = !isClicked.value
}
)
}