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

```kotlin
public class KeyframesSpecConfig<T> : KeyframesSpecBaseConfig<T, KeyframeEntity<T>>()
```

[KeyframesSpecConfig](/jetpack-compose/androidx.compose.animation/animation-core/classes/KeyframesSpec.KeyframesSpecConfig) stores a mutable configuration of the key frames, including
`durationMillis`, `delayMillis`, and all the key frames. Each key frame defines what the
animation value should be at a particular time. Once the key frames are fully configured, the
[KeyframesSpecConfig](/jetpack-compose/androidx.compose.animation/animation-core/classes/KeyframesSpec.KeyframesSpecConfig) can be used to create a [KeyframesSpec](/jetpack-compose/androidx.compose.animation/animation-core/classes/KeyframesSpec).

## Functions

<h2 id="with-easing">with</h2>

```kotlin
public infix fun KeyframeEntity<T>.with(easing: Easing)
```

Adds an [Easing](/jetpack-compose/androidx.compose.animation/animation-core/interfaces/Easing) for the interval started with the just provided timestamp. For example:
0f at 50 with LinearEasing

#### Parameters

| | |
| --- | --- |
| easing | [Easing](/jetpack-compose/androidx.compose.animation/animation-core/interfaces/Easing) to be used for the next interval. |

#### Returns

| | |
| --- | --- |
|  | the same [KeyframeEntity](/jetpack-compose/androidx.compose.animation/animation-core/classes/KeyframesSpec.KeyframeEntity) instance so that other implementations can expand on the builder pattern |

<hr class="docs-overload-divider">

<h2 id="using-arcmode">using</h2>

```kotlin
public infix fun KeyframeEntity<T>.using(arcMode: ArcMode): KeyframeEntity<T>
```

[ArcMode](/jetpack-compose/androidx.compose.animation/animation-core/classes/ArcMode) applied from this keyframe to the next.

Note that arc modes are meant for objects with even dimensions (such as [Offset](/jetpack-compose/androidx.compose.ui/ui-geometry/classes/Offset) and its
variants). Where each value pair is animated as an arc. So, if the object has odd
dimensions the last value will always animate linearly.

&nbsp;

The order of each value in an object with multiple dimensions is given by the applied
vector converter in [KeyframesSpec.vectorize](/jetpack-compose/androidx.compose.animation/animation-core/classes/KeyframesSpec).

E.g.: `RectToVector` assigns its values as `[left, top, right, bottom]` so the pairs of
dimensions animated as arcs are: `[left, top]` and `[right, bottom]`.