DecayAnimation

Class

Common
public class DecayAnimation<T, V : AnimationVector> /*@VisibleForTesting*/
constructor(
    private val animationSpec: VectorizedDecayAnimationSpec<V>,
    override val typeConverter: TwoWayConverter<T, V>,
    public val initialValue: T,
    initialVelocityVector: V,
) : Animation<T, V>

DecayAnimation is an animation that slows down from initialVelocityVector as time goes on. DecayAnimation is stateless, and it does not have any concept of lifecycle. It serves as an animation calculation engine that supports convenient query of value/velocity given a play time. To achieve that, DecayAnimation stores all the animation related information: initialValue, initialVelocityVector, decay animation spec, typeConverter.

Note: Unless there's a need to control the timing manually, it's generally recommended to use higher level animation APIs that build on top DecayAnimation, such as Animatable.animateDecay, AnimationState.animateDecay, etc.

Secondary Constructors

public constructor(
    animationSpec: DecayAnimationSpec<T>,
    typeConverter: TwoWayConverter<T, V>,
    initialValue: T,
    initialVelocityVector: V,
) : this(
    animationSpec.vectorize(typeConverter),
    typeConverter,
    initialValue,
    initialVelocityVector,
)

DecayAnimation is an animation that slows down from initialVelocityVector as time goes on. DecayAnimation is stateless, and it does not have any concept of lifecycle. It serves as an animation calculation engine that supports convenient query of value/velocity given a play time. To achieve that, DecayAnimation stores all the animation related information: initialValue, initialVelocityVector, decay animation spec, typeConverter.

Note: Unless there's a need to control the timing manually, it's generally recommended to use higher level animation APIs that build on top DecayAnimation, such as Animatable.animateDecay, AnimationState.animateDecay, etc.

Parameters

animationSpecDecay animation spec that defines the slow-down curve of the animation
typeConverterType converter to convert the type T from and to AnimationVector
initialValueThe starting value of the animation
initialVelocityVectorThe starting velocity of the animation in AnimationVector form
public constructor(
    animationSpec: DecayAnimationSpec<T>,
    typeConverter: TwoWayConverter<T, V>,
    initialValue: T,
    initialVelocity: T,
) : this(
    animationSpec.vectorize(typeConverter),
    typeConverter,
    initialValue,
    typeConverter.convertToVector(initialVelocity),
)

DecayAnimation is an animation that slows down from initialVelocity as time goes on. DecayAnimation is stateless, and it does not have any concept of lifecycle. It serves as an animation calculation engine that supports convenient query of value/velocity given a play time. To achieve that, DecayAnimation stores all the animation related information: initialValue, initialVelocity, animationSpec, typeConverter.

Note: Unless there's a need to control the timing manually, it's generally recommended to use higher level animation APIs that build on top DecayAnimation, such as Animatable.animateDecay, AnimationState.animateDecay, etc.

Parameters

animationSpecDecay animation spec that defines the slow-down curve of the animation
typeConverterType converter to convert the type T from and to AnimationVector
initialValueThe starting value of the animation
initialVelocityThe starting velocity of the animation