---
title: "MotionScheme"
description: "A motion scheme provides all the [FiniteAnimationSpec]s for a [MaterialTheme].

Motion schemes are designed to create a harmonious motion for components in the app.

There are two built-in schemes, a [standard] and an [expressive], that can be used as-is or
customized."
type: "interface"
---

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


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

<div class='sourceset sourceset-android'>Android</div>



```kotlin
public interface MotionScheme
```


A motion scheme provides all the `FiniteAnimationSpec`s for a `MaterialTheme`.

Motion schemes are designed to create a harmonious motion for components in the app.

There are two built-in schemes, a `standard` and an `expressive`, that can be used as-is or
customized.


## Functions

```kotlin
public fun <T> defaultSpatialSpec(): FiniteAnimationSpec<T>
```


A default spatial motion `FiniteAnimationSpec`.

This motion spec is designed to be applied to animations that can overshoot their targets
- such as shape or bounds animations. For color, alpha or other animations which have strict limits use the `effects` equivalent.

`T` is the generic data type that will be animated by the system, as long as the appropriate
`TwoWayConverter` for converting the data to and from an `AnimationVector` is supplied.


```kotlin
public fun <T> fastSpatialSpec(): FiniteAnimationSpec<T>
```


A fast spatial motion `FiniteAnimationSpec`.

This motion spec is designed to be applied to animations that can overshoot their targets
- such as shape or bounds animations. For color, alpha or other animations which have strict limits use the `effects` equivalent.

`T` is the generic data type that will be animated by the system, as long as the appropriate
`TwoWayConverter` for converting the data to and from an `AnimationVector` is supplied.


```kotlin
public fun <T> slowSpatialSpec(): FiniteAnimationSpec<T>
```


A slow spatial motion `FiniteAnimationSpec`.

This motion spec is designed to be applied to animations that can overshoot their targets
- such as shape or bounds animations. For color, alpha or other animations which have strict limits use the `effects` equivalent.

`T` is the generic data type that will be animated by the system, as long as the appropriate
`TwoWayConverter` for converting the data to and from an `AnimationVector` is supplied.


```kotlin
public fun <T> defaultEffectsSpec(): FiniteAnimationSpec<T>
```


A default effects motion `FiniteAnimationSpec`.

This motion spec is designed to be applied to animations that have strict limits and which
shouldn't overshoot their targets - such as color or alpha animations. For shape, bounds or
other animations which don't have strict limits use the 'spatial` equivalent.

`T` is the generic data type that will be animated by the system, as long as the appropriate
`TwoWayConverter` for converting the data to and from an `AnimationVector` is supplied.


```kotlin
public fun <T> fastEffectsSpec(): FiniteAnimationSpec<T>
```


A fast effects motion `FiniteAnimationSpec`.

This motion spec is designed to be applied to animations that have strict limits and which
shouldn't overshoot their targets - such as color or alpha animations. For shape, bounds or
other animations which don't have strict limits use the 'spatial` equivalent.

`T` is the generic data type that will be animated by the system, as long as the appropriate
`TwoWayConverter` for converting the data to and from an `AnimationVector` is supplied.


```kotlin
public fun <T> slowEffectsSpec(): FiniteAnimationSpec<T>
```


A slow effects motion `FiniteAnimationSpec`.

This motion spec is designed to be applied to animations that have strict limits and which
shouldn't overshoot their targets - such as color or alpha animations. For shape, bounds or
other animations which don't have strict limits use the 'spatial` equivalent.

`T` is the generic data type that will be animated by the system, as long as the appropriate
`TwoWayConverter` for converting the data to and from an `AnimationVector` is supplied.



