# AnimatorSet.Builder

# AnimatorSet.Builder

Artifact:[androidx.core:core-animation](https://developer.android.com/jetpack/androidx/releases/core)  
[View Source](https://cs.android.com/search?q=file:androidx/core/animation/AnimatorSet.java+class:androidx.core.animation.AnimatorSet.Builder)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/core/animation/AnimatorSet.Builder "View this page in Java")

<br />

```
inner class AnimatorSet.Builder
```

<br />

*** ** * ** ***

The`Builder`object is a utility class to facilitate adding animations to a`AnimatorSet`along with the relationships between the various animations. The intention of the`Builder`methods, along with the[play()](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))method of`AnimatorSet`is to make it possible to express the dependency relationships of animations in a natural way. Developers can also use the[playTogether()](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#playTogether(androidx.core.animation.Animator...))and[playSequentially()](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#playSequentially(androidx.core.animation.Animator...))methods if these suit the need, but it might be easier in some situations to express the AnimatorSet of animations in pairs.

The`Builder`object cannot be constructed directly, but is rather constructed internally via a call to[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator)).

For example, this sets up a AnimatorSet to play anim1 and anim2 at the same time, anim3 to play when anim2 finishes, and anim4 to play when anim3 finishes:  

```kotlin
    AnimatorSet s = new AnimatorSet();
    s.play(anim1).with(anim2);
    s.play(anim2).before(anim3);
    s.play(anim4).after(anim3);
```

Note in the example that both[before](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder#before(androidx.core.animation.Animator))and[after](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder#after(androidx.core.animation.Animator))are used. These are just different ways of expressing the same relationship and are provided to make it easier to say things in a way that is more natural, depending on the situation.

It is possible to make several calls into the same`Builder`object to express multiple relationships. However, note that it is only the animation passed into the initial[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))method that is the dependency in any of the successive calls to the`Builder`object. For example, the following code starts both anim2 and anim3 when anim1 ends; there is no direct dependency relationship between anim2 and anim3:  

```kotlin
  AnimatorSet s = new AnimatorSet();
  s.play(anim1).before(anim2).before(anim3);
```
If the desired result is to play anim1 then anim2 then anim3, this code expresses the relationship correctly:  

```kotlin
  AnimatorSet s = new AnimatorSet();
  s.play(anim1).before(anim2);
  s.play(anim2).before(anim3);
```

Note that it is possible to express relationships that cannot be resolved and will not result in sensible results. For example,`play(anim1).after(anim1)`makes no sense. In general, circular dependencies like this one (or more indirect ones where a depends on b, which depends on c, which depends on a) should be avoided. Only create AnimatorSets that can boil down to a simple, one-way relationship of animations starting with, before, and after other, different, animations.

## Summary

|                                               ### Public functions                                                |
|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [AnimatorSet.Builder](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder) | [after](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder#after(androidx.core.animation.Animator))`(anim: `[Animator](https://developer.android.com/reference/kotlin/androidx/core/animation/Animator)`)` Sets up the given animation to play when the animation supplied in the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))call that created this`Builder`object to start when the animation supplied in this method call ends. |
| [AnimatorSet.Builder](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder) | [after](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder#after(long))`(delay: `[Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)`)` Sets up the animation supplied in the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))call that created this`Builder`object to play when the given amount of time elapses.                                                                                           |
| [AnimatorSet.Builder](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder) | [before](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder#before(androidx.core.animation.Animator))`(anim: `[Animator](https://developer.android.com/reference/kotlin/androidx/core/animation/Animator)`)` Sets up the given animation to play when the animation supplied in the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))call that created this`Builder`object ends.                                                        |
| [AnimatorSet.Builder](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder) | [with](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet.Builder#with(androidx.core.animation.Animator))`(anim: `[Animator](https://developer.android.com/reference/kotlin/androidx/core/animation/Animator)`)` Sets up the given animation to play at the same time as the animation supplied in the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))call that created this`Builder`object.                                                  |

## Public functions

### after

```
fun after(anim: Animator): AnimatorSet.Builder
```

Sets up the given animation to play when the animation supplied in the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))call that created this`Builder`object to start when the animation supplied in this method call ends.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `anim: `[Animator](https://developer.android.com/reference/kotlin/androidx/core/animation/Animator) | The animation whose end will cause the animation supplied to the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))method to play. |

### after

```
fun after(delay: Long): AnimatorSet.Builder
```

Sets up the animation supplied in the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))call that created this`Builder`object to play when the given amount of time elapses.  

|                                       Parameters                                       |
|----------------------------------------------------------------------------------------|----------------------------------------------------------------------------|
| `delay: `[Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) | The number of milliseconds that should elapse before the animation starts. |

### before

```
fun before(anim: Animator): AnimatorSet.Builder
```

Sets up the given animation to play when the animation supplied in the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))call that created this`Builder`object ends.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `anim: `[Animator](https://developer.android.com/reference/kotlin/androidx/core/animation/Animator) | The animation that will play when the animation supplied to the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))method ends. |

### with

```
fun with(anim: Animator): AnimatorSet.Builder
```

Sets up the given animation to play at the same time as the animation supplied in the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))call that created this`Builder`object.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `anim: `[Animator](https://developer.android.com/reference/kotlin/androidx/core/animation/Animator) | The animation that will play when the animation supplied to the[play](https://developer.android.com/reference/kotlin/androidx/core/animation/AnimatorSet#play(androidx.core.animation.Animator))method starts. |