# TransitionSeekController

Artifact: [androidx.transition:transition](https://developer.android.com/jetpack/androidx/releases/transition) [View Source](https://cs.android.com/search?q=file:androidx/transition/TransitionSeekController.java+class:androidx.transition.TransitionSeekController) Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

*** ** * ** ***


```
public interface TransitionSeekController
```

<br />

*** ** * ** ***

Returned from `https://developer.android.com/reference/androidx/transition/TransitionManager#controlDelayedTransition(android.view.ViewGroup,androidx.transition.Transition)` to allow manually controlling the animations within a Transition using `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentPlayTimeMillis(long)`. The transition will be ready to seek when `https://developer.android.com/reference/androidx/transition/TransitionSeekController#isReady()` is `true`.

## Summary

| ### Public methods |
|---|---|
| `abstract void` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#addOnProgressChangedListener(androidx.core.util.Consumer<androidx.transition.TransitionSeekController>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/util/Consumer<https://developer.android.com/reference/androidx/transition/TransitionSeekController> consumer )` Add a listener for whenever the progress of the transition is changed. |
| `abstract void` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#addOnReadyListener(androidx.core.util.Consumer<androidx.transition.TransitionSeekController>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/util/Consumer<https://developer.android.com/reference/androidx/transition/TransitionSeekController> onReadyListener )` Adds a listener to know when `https://developer.android.com/reference/androidx/transition/TransitionSeekController#isReady()` is `true`. |
| `abstract void` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#animateToEnd()()` Runs the animation forwards toward the end. |
| `abstract void` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#animateToStart(java.lang.Runnable)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Runnable.html resetToStartState)` Runs the animation backwards toward the start. |
| `abstract @https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0.0, to = 1.0) float` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#getCurrentFraction()()` |
| `abstract @https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) long` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#getCurrentPlayTimeMillis()()` |
| `abstract @https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) long` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#getDurationMillis()()` |
| `abstract boolean` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#isReady()()` Returns `true` when the Transition is ready to seek or `false` when the Transition's animations have yet to be built. |
| `abstract void` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#removeOnProgressChangedListener(androidx.core.util.Consumer<androidx.transition.TransitionSeekController>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/util/Consumer<https://developer.android.com/reference/androidx/transition/TransitionSeekController> consumer )` Remove a listener previously added in `https://developer.android.com/reference/androidx/transition/TransitionSeekController#addOnProgressChangedListener(androidx.core.util.Consumer<androidx.transition.TransitionSeekController>)` |
| `abstract void` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#removeOnReadyListener(androidx.core.util.Consumer<androidx.transition.TransitionSeekController>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/util/Consumer<https://developer.android.com/reference/androidx/transition/TransitionSeekController> onReadyListener )` Removes `onReadyListener` that was previously added in `https://developer.android.com/reference/androidx/transition/TransitionSeekController#addOnReadyListener(androidx.core.util.Consumer<androidx.transition.TransitionSeekController>)` so that it won't be called. |
| `abstract void` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentFraction(float)(@https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0.0, to = 1.0) float fraction)` Sets the position of the Transition's animation. |
| `abstract void` | `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentPlayTimeMillis(long)(@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) long playTimeMillis)` Sets the position of the Transition's animation. |

## Public methods

### addOnProgressChangedListener

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract void addOnProgressChangedListener(
    @NonNull Consumer<TransitionSeekController> consumer
)
```

Add a listener for whenever the progress of the transition is changed. This will be called when `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentPlayTimeMillis(long)` or `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentFraction(float)` are called as well as when the animation from `https://developer.android.com/reference/androidx/transition/TransitionSeekController#animateToEnd()` or `https://developer.android.com/reference/androidx/transition/TransitionSeekController#animateToStart(java.lang.Runnable)` changes the progress.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/util/Consumer<https://developer.android.com/reference/androidx/transition/TransitionSeekController> consumer` | A method that accepts this TransitionSeekController. |

### addOnReadyListener

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract void addOnReadyListener(
    @NonNull Consumer<TransitionSeekController> onReadyListener
)
```

Adds a listener to know when `https://developer.android.com/reference/androidx/transition/TransitionSeekController#isReady()` is `true`. The listener will be removed once notified as `https://developer.android.com/reference/androidx/transition/TransitionSeekController#isReady()` can only be made true once. If `https://developer.android.com/reference/androidx/transition/TransitionSeekController#isReady()` is already `true`, then it will be notified immediately.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/util/Consumer<https://developer.android.com/reference/androidx/transition/TransitionSeekController> onReadyListener` | The listener to be notified when the Transition is ready. |

### animateToEnd

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract void animateToEnd()
```

Runs the animation forwards toward the end. `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentPlayTimeMillis(long)` will not be allowed after executing this. When the animation completes, `https://developer.android.com/reference/androidx/transition/Transition.TransitionListener#onTransitionEnd(androidx.transition.Transition)` will be called with the `isReverse` parameter `false`. After the Transition ends, the state will reach the final state set after `https://developer.android.com/reference/androidx/transition/TransitionManager#controlDelayedTransition(android.view.ViewGroup,androidx.transition.Transition)`. After calling this, `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentPlayTimeMillis(long)` may not be called.

### animateToStart

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract void animateToStart(@NonNull Runnable resetToStartState)
```

Runs the animation backwards toward the start. `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentPlayTimeMillis(long)` will not be allowed after executing this. When the animation completes, `resetToStart` will be executed to set the state back to the starting state and `https://developer.android.com/reference/androidx/transition/Transition.TransitionListener#onTransitionEnd(androidx.transition.Transition)` will be called with the `isReverse` parameter `true`. If `resetToStartState` does not properly set the state back to starting state, `https://developer.android.com/reference/androidx/transition/Transition.TransitionListener#onTransitionEnd(androidx.transition.Transition)` will still be called, but the UI will jump to the end state instead of the start state.

### getCurrentFraction

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract @FloatRange(from = 0.0, to = 1.0) float getCurrentFraction()
```

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0.0, to = 1.0) float` | The fraction, between 0 and 1, inclusive, of the progress of the transition. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/transition/TransitionSeekController#getCurrentPlayTimeMillis()` |   |

### getCurrentPlayTimeMillis

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract @IntRange(from = 0) long getCurrentPlayTimeMillis()
```

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) long` | The time, in milliseconds, of the animation. This will be between 0 and `https://developer.android.com/reference/androidx/transition/TransitionSeekController#getDurationMillis()`. |

### getDurationMillis

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract @IntRange(from = 0) long getDurationMillis()
```

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) long` | The total duration, in milliseconds, of the Transition's animations. |

### isReady

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract boolean isReady()
```

Returns `true` when the Transition is ready to seek or `false` when the Transition's animations have yet to be built.

### removeOnProgressChangedListener

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract void removeOnProgressChangedListener(
    @NonNull Consumer<TransitionSeekController> consumer
)
```

Remove a listener previously added in `https://developer.android.com/reference/androidx/transition/TransitionSeekController#addOnProgressChangedListener(androidx.core.util.Consumer<androidx.transition.TransitionSeekController>)`

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/util/Consumer<https://developer.android.com/reference/androidx/transition/TransitionSeekController> consumer` | The listener to be removed. |

### removeOnReadyListener

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract void removeOnReadyListener(
    @NonNull Consumer<TransitionSeekController> onReadyListener
)
```

Removes `onReadyListener` that was previously added in `https://developer.android.com/reference/androidx/transition/TransitionSeekController#addOnReadyListener(androidx.core.util.Consumer<androidx.transition.TransitionSeekController>)` so that it won't be called.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/util/Consumer<https://developer.android.com/reference/androidx/transition/TransitionSeekController> onReadyListener` | The listener to be removed so that it won't be notified when ready. |

### setCurrentFraction

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract void setCurrentFraction(@FloatRange(from = 0.0, to = 1.0) float fraction)
```

Sets the position of the Transition's animation. `fraction` should be between 0 and 1, inclusive, where 0 indicates that the transition hasn't progressed and 1 indicates that the transition is completed. Calling this before `https://developer.android.com/reference/androidx/transition/TransitionSeekController#isReady()` is `true` will do nothing.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0.0, to = 1.0) float fraction` | The fraction, between 0 and 1, inclusive, of the progress of the transition. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentPlayTimeMillis(long)` |   |

### setCurrentPlayTimeMillis

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/transition#1.5.0)

```
abstract void setCurrentPlayTimeMillis(@IntRange(from = 0) long playTimeMillis)
```

Sets the position of the Transition's animation. `playTimeMillis` should be between 0 and `https://developer.android.com/reference/androidx/transition/TransitionSeekController#getDurationMillis()`. Calling this before `https://developer.android.com/reference/androidx/transition/TransitionSeekController#isReady()` is `true` will do nothing.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) long playTimeMillis` | The time, between 0 and `https://developer.android.com/reference/androidx/transition/TransitionSeekController#getDurationMillis()` that the animation should play. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/transition/TransitionSeekController#setCurrentFraction(float)` |   |