KeyframesSpec
public class KeyframesSpec<T>(public val config: KeyframesSpecConfig<T>) :
DurationBasedAnimationSpec<T>
KeyframesSpec creates a VectorizedKeyframesSpec animation.
VectorizedKeyframesSpec animates based on the values defined at different timestamps in the
duration of the animation (i.e. different keyframes). Each keyframe can be defined using
KeyframesSpecConfig.at. VectorizedKeyframesSpec allows very specific animation definitions
with a precision to millisecond.
For each interval, you may provide a custom Easing by use of the KeyframesSpecConfig.using
function.
By default, values are animated linearly from one interval to the next (similar to tween),
however for 2-dimensional values you may animate them using arcs of quarter of an Ellipse with
KeyframesSpecConfig.using and ArcMode:
If instead, you wish to have a smooth curvy animation across all intervals, consider using
KeyframesWithSplineSpec.
Code Examples
FloatKeyframesBuilder
fun FloatKeyframesBuilder() {
KeyframesSpec(
KeyframesSpec.KeyframesSpecConfig<Float>().apply {
0f at 0 // ms // Optional
0.4f at 75 // ms
0.4f at 225 // ms
0f at 375 // ms // Optional
durationMillis = 375
}
)
}
KeyframesBuilderWithEasing
fun KeyframesBuilderWithEasing() {
// Use FastOutSlowInEasing for the interval from 0 to 50 ms, and LinearOutSlowInEasing for the
// time between 50 and 100ms
keyframes<Float> {
durationMillis = 100
0f at 0 using FastOutSlowInEasing
1.5f at 50 using LinearOutSlowInEasing
1f at 100
}
}
OffsetKeyframesWithArcsBuilder
fun OffsetKeyframesWithArcsBuilder() {
keyframes<Offset> {
// Animate for 1.2 seconds
durationMillis = 1200
// Animate to Offset(100f, 100f) at 50% of the animation using LinearEasing then, animate
// using ArcAbove for the rest of the animation
Offset(100f, 100f) atFraction 0.5f using LinearEasing using ArcAbove
}
}
