The Android Developer Challenge is back! Submit your idea before December 2.

<KeyFrameSet>

Specifies location and attributes for views over the course of the motion sequence. By default, motion proceeds from the initial state to the end state; by using <KeyFrameSet>, you can build more complex motions. The <KeyFrameSet> contains <KeyPosition> or <KeyAttribute> nodes. Each of those nodes specifies the position or attributes of a target view at a specific point in the motion. MotionLayout smoothly animates the view from the starting point to each of those intermediate points, and then to the final destination.

For example, suppose the initial state of the motion sequence has an opaque ball in the lower left corner of the view, and the final state has the ball in the upper right corner and entirely transparent. By default, the MotionLayout would move the ball smoothly in a diagonal line, gradually becoming more transparent until it vanishes when it reaches its destination. By using <KeyFrameSet>, you can change this behavior. For example, you might set the ball to move vertically to the upper left corner while remaining entirely opaque, then move horizontally to the upper right corner while fading out. You would do this by creating a <KeyFrameSet>, and adding a <KeyPosition> and a <KeyAttribute> inside it. The <KeyPosition> would specify the intermediate location of the ball, and the <KeyAttribute> would specify that the ball remains opaque at the midpoint of the motion.

Syntax

<KeyFrameSet>
    [ <KeyPosition/>... ]
    [ <KeyAttribute/>...]
</KeyFrameSet>

Contained in

<Transition>

Contains