FloatAnimationSpec
@JvmDefaultWithCompatibility
public interface FloatAnimationSpec : AnimationSpec<Float>
FloatAnimationSpec
interface is similar to VectorizedAnimationSpec
, except it deals
exclusively with floats.
Like VectorizedAnimationSpec
, FloatAnimationSpec
is entirely stateless as well. It requires
start/end values and start velocity to be passed in for the query of velocity and value of the
animation. The FloatAnimationSpec
itself stores only the animation configuration (such as the
delay, duration and easing curve for FloatTweenSpec
, or spring constants for FloatSpringSpec
.
A FloatAnimationSpec
can be converted to an VectorizedAnimationSpec
using vectorize
.
Functions
public fun getValueFromNanos(
playTimeNanos: Long,
initialValue: Float,
targetValue: Float,
initialVelocity: Float,
): Float
Calculates the value of the animation at given the playtime, with the provided start/end values, and start velocity.
Parameters
playTimeNanos | time since the start of the animation |
initialValue | start value of the animation |
targetValue | end value of the animation |
initialVelocity | start velocity of the animation |
public fun getVelocityFromNanos(
playTimeNanos: Long,
initialValue: Float,
targetValue: Float,
initialVelocity: Float,
): Float
Calculates the velocity of the animation at given the playtime, with the provided start/end values, and start velocity.
Parameters
playTimeNanos | time since the start of the animation |
initialValue | start value of the animation |
targetValue | end value of the animation |
initialVelocity | start velocity of the animation |
public fun getEndVelocity(
initialValue: Float,
targetValue: Float,
initialVelocity: Float,
): Float
Calculates the end velocity of the animation with the provided start/end values, and start velocity. For duration-based animations, end velocity will be the velocity of the animation at the duration time. This is also the default assumption. However, for spring animations, the transient trailing velocity will be snapped to zero.
Parameters
initialValue | start value of the animation |
targetValue | end value of the animation |
initialVelocity | start velocity of the animation |
public fun getDurationNanos(
initialValue: Float,
targetValue: Float,
initialVelocity: Float,
): Long
Calculates the duration of an animation. For duration-based animations, this will return the
pre-defined duration. For physics-based animations, the duration will be estimated based on
the physics configuration (such as spring stiffness, damping ratio, visibility threshold) as
well as the initialValue
, targetValue
values, and initialVelocity
.
Note: this may be a computation that is expensive - especially with spring based animations
Parameters
initialValue | start value of the animation |
targetValue | end value of the animation |
initialVelocity | start velocity of the animation |
override fun <V : AnimationVector> vectorize(
converter: TwoWayConverter<Float, V>
): VectorizedFloatAnimationSpec<V>
Create an VectorizedAnimationSpec
that animates AnimationVector
from a
FloatAnimationSpec
. Every dimension of the AnimationVector
will be animated using the
given FloatAnimationSpec
.