---
title: "AnimationSpec"
description: "[AnimationSpec] stores the specification of an animation, including 1) the data type to be
animated, and 2) the animation configuration (i.e. [VectorizedAnimationSpec]) that will be used
once the data (of type [T]) has been converted to [AnimationVector].

Any type [T] can be animated by the system as long as a [TwoWayConverter] is supplied to convert
the data type [T] from and to an [AnimationVector]. There are a number of converters available
out of the box. For example, to animate [androidx.compose.ui.unit.IntOffset] the system uses
[IntOffset.VectorConverter][IntOffset.Companion.VectorConverter] to convert the object to
[AnimationVector2D], so that both x and y dimensions are animated independently with separate
velocity tracking. This enables multidimensional objects to be animated in a true
multi-dimensional way. It is particularly useful for smoothly handling animation interruptions
(such as when the target changes during the animation)."
type: "interface"
---

<div class='type'>Interface</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>



```kotlin
public interface AnimationSpec<T>
```


`AnimationSpec` stores the specification of an animation, including 1) the data type to be
animated, and 2) the animation configuration (i.e. `VectorizedAnimationSpec`) that will be used
once the data (of type `T`) has been converted to `AnimationVector`.

Any type `T` can be animated by the system as long as a `TwoWayConverter` is supplied to convert
the data type `T` from and to an `AnimationVector`. There are a number of converters available
out of the box. For example, to animate `androidx.compose.ui.unit.IntOffset` the system uses
`IntOffset.VectorConverter` to convert the object to
`AnimationVector2D`, so that both x and y dimensions are animated independently with separate
velocity tracking. This enables multidimensional objects to be animated in a true
multi-dimensional way. It is particularly useful for smoothly handling animation interruptions
(such as when the target changes during the animation).


## Functions

```kotlin
public fun <V : AnimationVector> vectorize(
        converter: TwoWayConverter<T, V>
    ): VectorizedAnimationSpec<V>
```


Creates a `VectorizedAnimationSpec` with the given `TwoWayConverter`.

The underlying animation system operates on `AnimationVector`s. `T` will be converted to
`AnimationVector` to animate. `VectorizedAnimationSpec` describes how the converted
`AnimationVector` should be animated. E.g. The animation could simply interpolate between the
start and end values (i.e.`TweenSpec`), or apply spring physics to produce the motion (i.e.
`SpringSpec`), etc)

#### Parameters

| | |
| --- | --- |
| converter | converts the type `T` from and to `AnimationVector` type |




