Animations in android hasn't always been straight forward to implement. The introduction of jetpack compose makes animations a bit more enjoyable and easier to implement.
In this article we'll be looking at the animateValueAsState api. Values currently supported are Color,Float,Dp,Rect,Int,Inoffset and Instize.
Let's take a look at animating color states for this series. We'll be creating something like this
// --> 1
val Purple = Color(0xFF6200EE)
val Orange = Color(0xFFFF5722)
val White = Color(0xFFFFFFFF)
val Blue = Color(0xFF4052B8)
val Green = Color(0xFF4CAF50)
val Yellow = Color(0xFFFFEB3B)
// --> 2
var currentColor by remember {
mutableStateOf(White)
}
// --> 3
val colors by remember {
mutableStateOf(listOf(White, Orange, Purple200, Blue, Green,Yellow))
}
val cardBackground by animateColorAsState(targetValue = currentColor)
Box(modifier = Modifier.fillMaxSize()) {
Card(
modifier = Modifier
.fillMaxWidth()
.padding(10.dp)
.height(200.dp),
onClick = {
// --> 4
currentColor = colors.random()
},
backgroundColor = cardBackground,
elevation = 3.dp, indication = rememberRipple()
) {
Box(modifier = Modifier.fillMaxSize()) {
Text(text = "Click to Change Color", modifier = Modifier.align(Alignment.Center))
}
}
}
- We declare the colors we want to set the box as we click it.
- Animate*AsState requires a target state that is mutable. NB : Animate*AsState in it self needs immutable
- Make a list from all defined colors
- Assign currentColor a new value on click
Happy Coding, See you in the next series !
Code Link
Top comments (0)