Google is committed to advancing racial equity for Black communities. See how.

Builder

class Builder
kotlin.Any
   ↳ androidx.core.animation.AnimatorSet.Builder

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 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() and 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 AnimatorSet#play(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:

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 Builder#before(Animator) and 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 AnimatorSet#play(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:

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:

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 methods
open AnimatorSet.Builder
after(@NonNull anim: Animator)

Sets up the given animation to play when the animation supplied in the AnimatorSet#play(Animator) call that created this Builder object to start when the animation supplied in this method call ends.

open AnimatorSet.Builder
after(delay: Long)

Sets up the animation supplied in the AnimatorSet#play(Animator) call that created this Builder object to play when the given amount of time elapses.

open AnimatorSet.Builder
before(@NonNull anim: Animator)

Sets up the given animation to play when the animation supplied in the AnimatorSet#play(Animator) call that created this Builder object ends.

open AnimatorSet.Builder
with(@NonNull anim: Animator)

Sets up the given animation to play at the same time as the animation supplied in the AnimatorSet#play(Animator) call that created this Builder object.

Public methods

after

@NonNull open fun after(@NonNull anim: Animator): AnimatorSet.Builder

Sets up the given animation to play when the animation supplied in the AnimatorSet#play(Animator) call that created this Builder object to start when the animation supplied in this method call ends.

Parameters
anim Animator: The animation whose end will cause the animation supplied to the AnimatorSet#play(Animator) method to play.

after

@NonNull open fun after(delay: Long): AnimatorSet.Builder

Sets up the animation supplied in the AnimatorSet#play(Animator) call that created this Builder object to play when the given amount of time elapses.

Parameters
delay Long: The number of milliseconds that should elapse before the animation starts.

before

@NonNull open fun before(@NonNull anim: Animator): AnimatorSet.Builder

Sets up the given animation to play when the animation supplied in the AnimatorSet#play(Animator) call that created this Builder object ends.

Parameters
anim Animator: The animation that will play when the animation supplied to the AnimatorSet#play(Animator) method ends.

with

@NonNull open fun with(@NonNull anim: Animator): AnimatorSet.Builder

Sets up the given animation to play at the same time as the animation supplied in the AnimatorSet#play(Animator) call that created this Builder object.

Parameters
anim Animator: The animation that will play when the animation supplied to the AnimatorSet#play(Animator) method starts.