animateColorAsState
@Composable
public fun animateColorAsState(
targetValue: Color,
animationSpec: AnimationSpec<Color> = colorDefaultSpring,
label: String = "ColorAnimation",
finishedListener: ((Color) -> Unit)? = null,
): State<Color>
Fire-and-forget animation function for Color
. This Composable function is overloaded for
different parameter types such as Dp
, Float
, Int
, Size
, Offset
, etc. When the provided
targetValue
is changed, the animation will run automatically. If there is already an animation
in-flight when targetValue
changes, the on-going animation will adjust course to animate
towards the new target value.
animateColorAsState
returns a State
object. The value of the state object will continuously
be updated by the animation until the animation finishes.
Note, animateColorAsState
cannot be canceled/stopped without removing this composable function
from the tree. See Animatable
for cancelable animations.
Parameters
targetValue | Target value of the animation |
animationSpec | The animation that will be used to change the value through time, spring by default |
label | An optional label to differentiate from other animations in Android Studio. |
finishedListener | An optional listener to get notified when the animation is finished. |
Deprecated animate*AsState APIs now have a new label parameter added.
@Composable
public fun animateColorAsState(
targetValue: Color,
animationSpec: AnimationSpec<Color> = colorDefaultSpring,
finishedListener: ((Color) -> Unit)? = null,
): State<Color>
Code Examples
ColorAnimationSample
@Composable
fun ColorAnimationSample() {
@Composable
fun ColorAnimation(primary: Boolean) {
// Animates to primary or secondary color, depending on whether [primary] is true
// [animateState] returns the current animation value in a State<Color> in this example. We
// use the State<Color> object as a property delegate here.
val color: Color by
animateColorAsState(
if (primary) MaterialTheme.colors.primary else MaterialTheme.colors.secondary
)
Box(modifier = Modifier.background(color))
}
}