public abstract class

Animation

extends Object
implements Cloneable
java.lang.Object
   ↳ android.view.animation.Animation
Known Direct Subclasses

Class Overview

Abstraction for an Animation that can be applied to Views, Surfaces, or other objects. See the animation package description file.

Summary

Nested Classes
public abstract class Animation.AnimationListener

An animation listener receives notifications from an animation. 

public abstract class Animation.Description Utility class to parse a string description of a size. 
XML Attributes
Attribute Name Related Method Description
android:duration setDuration(long) Amount of time (in milliseconds) for the animation to run. 
android:fillAfter setFillAfter(boolean) When set to true, the animation transformation is applied after the animation is over. 
android:fillBefore setFillBefore(boolean) When set to true, the animation transformation is applied before the animation has started. 
android:fillEnabled setFillEnabled(boolean) When set to true, fillAfter is taken into account. 
android:interpolator setInterpolator(Interpolator) Defines the interpolator used to smooth the animation movement in time. 
android:repeatCount setRepeatCount(int) Defines how many times the animation should repeat. 
android:repeatMode setRepeatMode(int) Defines the animation behavior when it reaches the end and the repeat count is greater than 0 or infinite. 
android:startOffset setStartOffset(long) Delay in milliseconds before the animation runs, once start time is reached. 
android:zAdjustment setZAdjustment(int) Allows for an adjustment of the Z ordering of the content being animated for the duration of the animation. 
Constants
int ABSOLUTE The specified dimension is an absolute number of pixels.
int INFINITE Repeat the animation indefinitely.
int RELATIVE_TO_PARENT The specified dimension holds a float and should be multiplied by the height or width of the parent of the object being animated.
int RELATIVE_TO_SELF The specified dimension holds a float and should be multiplied by the height or width of the object being animated.
int RESTART When the animation reaches the end and the repeat count is INFINTE_REPEAT or a positive value, the animation restarts from the beginning.
int REVERSE When the animation reaches the end and the repeat count is INFINTE_REPEAT or a positive value, the animation plays backward (and then forward again).
int START_ON_FIRST_FRAME Can be used as the start time to indicate the start time should be the current time when getTransformation(long, Transformation) is invoked for the first animation frame.
int ZORDER_BOTTOM Requests that the content being animated be forced under all other content for the duration of the animation.
int ZORDER_NORMAL Requests that the content being animated be kept in its current Z order.
int ZORDER_TOP Requests that the content being animated be forced on top of all other content for the duration of the animation.
Public Constructors
Animation()
Creates a new animation with a duration of 0ms, the default interpolator, with fillBefore set to true and fillAfter set to false
Animation(Context context, AttributeSet attrs)
Creates a new animation whose parameters come from the specified context and attributes set.
Public Methods
long computeDurationHint()
Compute a hint at how long the entire animation may last, in milliseconds.
long getDuration()
How long this animation should last
boolean getFillAfter()
If fillAfter is true, this animation will apply its transformation after the end time of the animation.
boolean getFillBefore()
If fillBefore is true, this animation will apply its transformation before the start time of the animation.
Interpolator getInterpolator()
Gets the acceleration curve type for this animation.
int getRepeatCount()
Defines how many times the animation should repeat.
int getRepeatMode()
Defines what this animation should do when it reaches the end.
long getStartOffset()
When this animation should start, relative to StartTime
long getStartTime()
When this animation should start.
boolean getTransformation(long currentTime, Transformation outTransformation)
Gets the transformation to apply at a specified point in time.
int getZAdjustment()
Returns the Z ordering mode to use while running the animation as previously set by setZAdjustment(int).
boolean hasEnded()

Indicates whether this animation has ended or not.

boolean hasStarted()

Indicates whether this animation has started or not.

void initialize(int width, int height, int parentWidth, int parentHeight)
Initialize this animation with the dimensions of the object being animated as well as the objects parents.
boolean isFillEnabled()
If fillEnabled is true, this animation will apply fillBefore and fillAfter.
boolean isInitialized()
Whether or not the animation has been initialized.
void reset()
Reset the initialization state of this animation.
void restrictDuration(long durationMillis)
Ensure that the duration that this animation will run is not longer than durationMillis.
void scaleCurrentDuration(float scale)
How much to scale the duration by.
void setAnimationListener(Animation.AnimationListener listener)

Binds an animation listener to this animation.

void setDuration(long durationMillis)
How long this animation should last.
void setFillAfter(boolean fillAfter)
If fillAfter is true, the transformation that this animation performed will persist when it is finished.
void setFillBefore(boolean fillBefore)
If fillBefore is true, this animation will apply its transformation before the start time of the animation.
void setFillEnabled(boolean fillEnabled)
If fillEnabled is true, the animation will apply the value of fillBefore and fillAfter.
void setInterpolator(Context context, int resID)
Sets the acceleration curve for this animation.
void setInterpolator(Interpolator i)
Sets the acceleration curve for this animation.
void setRepeatCount(int repeatCount)
Sets how many times the animation should be repeated.
void setRepeatMode(int repeatMode)
Defines what this animation should do when it reaches the end.
void setStartOffset(long startOffset)
When this animation should start relative to the start time.
void setStartTime(long startTimeMillis)
When this animation should start.
void setZAdjustment(int zAdjustment)
Set the Z ordering mode to use while running the animation.
void start()
Convenience method to start the animation the first time getTransformation(long, Transformation) is invoked.
void startNow()
Convenience method to start the animation at the current time in milliseconds.
boolean willChangeBounds()

Indicates whether or not this animation will affect the bounds of the animated view.

boolean willChangeTransformationMatrix()

Indicates whether or not this animation will affect the transformation matrix.

Protected Methods
void applyTransformation(float interpolatedTime, Transformation t)
Helper for getTransformation.
Animation clone()
Creates and returns a copy of this Object.
void ensureInterpolator()
Gurantees that this animation has an interpolator.
float resolveSize(int type, float value, int size, int parentSize)
Convert the information in the description of a size to an actual dimension
[Expand]
Inherited Methods
From class java.lang.Object

XML Attributes

android:duration

Amount of time (in milliseconds) for the animation to run.

Must be an integer value, such as "100".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol duration.

Related Methods

android:fillAfter

When set to true, the animation transformation is applied after the animation is over. The default value is false. If fillEnabled is not set to true and the animation is not set on a View, fillAfter is assumed to be true.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol fillAfter.

Related Methods

android:fillBefore

When set to true, the animation transformation is applied before the animation has started. The default value is true. If fillEnabled is not set to true, fillBefore is assumed to be true.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol fillBefore.

Related Methods

android:fillEnabled

When set to true, fillAfter is taken into account.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol fillEnabled.

Related Methods

android:interpolator

Defines the interpolator used to smooth the animation movement in time.

Must be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

This corresponds to the global attribute resource symbol interpolator.

android:repeatCount

Defines how many times the animation should repeat. The default value is 0.

May be an integer value, such as "100".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

May be one of the following constant values.

ConstantValueDescription
infinite-1

This corresponds to the global attribute resource symbol repeatCount.

Related Methods

android:repeatMode

Defines the animation behavior when it reaches the end and the repeat count is greater than 0 or infinite. The default value is restart.

Must be one of the following constant values.

ConstantValueDescription
restart1 The animation starts again from the beginning.
reverse2 The animation plays backward.

This corresponds to the global attribute resource symbol repeatMode.

Related Methods

android:startOffset

Delay in milliseconds before the animation runs, once start time is reached.

Must be an integer value, such as "100".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol startOffset.

Related Methods

android:zAdjustment

Allows for an adjustment of the Z ordering of the content being animated for the duration of the animation. The default value is normal.

Must be one of the following constant values.

ConstantValueDescription
normal0 The content being animated be kept in its current Z order.
top1 The content being animated is forced on top of all other content for the duration of the animation.
bottom-1 The content being animated is forced under all other content for the duration of the animation.

This corresponds to the global attribute resource symbol zAdjustment.

Related Methods

Constants

public static final int ABSOLUTE

The specified dimension is an absolute number of pixels.

Constant Value: 0 (0x00000000)

public static final int INFINITE

Repeat the animation indefinitely.

Constant Value: -1 (0xffffffff)

public static final int RELATIVE_TO_PARENT

The specified dimension holds a float and should be multiplied by the height or width of the parent of the object being animated.

Constant Value: 2 (0x00000002)

public static final int RELATIVE_TO_SELF

The specified dimension holds a float and should be multiplied by the height or width of the object being animated.

Constant Value: 1 (0x00000001)

public static final int RESTART

When the animation reaches the end and the repeat count is INFINTE_REPEAT or a positive value, the animation restarts from the beginning.

Constant Value: 1 (0x00000001)

public static final int REVERSE

When the animation reaches the end and the repeat count is INFINTE_REPEAT or a positive value, the animation plays backward (and then forward again).

Constant Value: 2 (0x00000002)

public static final int START_ON_FIRST_FRAME

Can be used as the start time to indicate the start time should be the current time when getTransformation(long, Transformation) is invoked for the first animation frame. This can is useful for short animations.

Constant Value: -1 (0xffffffff)

public static final int ZORDER_BOTTOM

Requests that the content being animated be forced under all other content for the duration of the animation.

Constant Value: -1 (0xffffffff)

public static final int ZORDER_NORMAL

Requests that the content being animated be kept in its current Z order.

Constant Value: 0 (0x00000000)

public static final int ZORDER_TOP

Requests that the content being animated be forced on top of all other content for the duration of the animation.

Constant Value: 1 (0x00000001)

Public Constructors

public Animation ()

Creates a new animation with a duration of 0ms, the default interpolator, with fillBefore set to true and fillAfter set to false

public Animation (Context context, AttributeSet attrs)

Creates a new animation whose parameters come from the specified context and attributes set.

Parameters
context the application environment
attrs the set of attributes holding the animation parameters

Public Methods

public long computeDurationHint ()

Compute a hint at how long the entire animation may last, in milliseconds. Animations can be written to cause themselves to run for a different duration than what is computed here, but generally this should be accurate.

public long getDuration ()

How long this animation should last

Related XML Attributes
Returns
  • the duration in milliseconds of the animation

public boolean getFillAfter ()

If fillAfter is true, this animation will apply its transformation after the end time of the animation.

Related XML Attributes
Returns
  • true if the animation applies its transformation after it ends

public boolean getFillBefore ()

If fillBefore is true, this animation will apply its transformation before the start time of the animation.

Related XML Attributes
Returns
  • true if the animation applies its transformation before it starts

public Interpolator getInterpolator ()

Gets the acceleration curve type for this animation.

Related XML Attributes
Returns

public int getRepeatCount ()

Defines how many times the animation should repeat. The default value is 0.

Related XML Attributes
Returns
  • the number of times the animation should repeat, or INFINITE

public int getRepeatMode ()

Defines what this animation should do when it reaches the end.

Related XML Attributes
Returns

public long getStartOffset ()

When this animation should start, relative to StartTime

Related XML Attributes
Returns
  • the start offset in milliseconds

public long getStartTime ()

When this animation should start. If the animation has not startet yet, this method might return START_ON_FIRST_FRAME.

Returns

public boolean getTransformation (long currentTime, Transformation outTransformation)

Gets the transformation to apply at a specified point in time. Implementations of this method should always replace the specified Transformation or document they are doing otherwise.

Parameters
currentTime Where we are in the animation. This is wall clock time.
outTransformation A tranformation object that is provided by the caller and will be filled in by the animation.
Returns
  • True if the animation is still running

public int getZAdjustment ()

Returns the Z ordering mode to use while running the animation as previously set by setZAdjustment(int).

Related XML Attributes
Returns

public boolean hasEnded ()

Indicates whether this animation has ended or not.

Returns
  • true if the animation has ended, false otherwise

public boolean hasStarted ()

Indicates whether this animation has started or not.

Returns
  • true if the animation has started, false otherwise

public void initialize (int width, int height, int parentWidth, int parentHeight)

Initialize this animation with the dimensions of the object being animated as well as the objects parents. (This is to support animation sizes being specifed relative to these dimensions.)

Objects that interpret a Animations should call this method when the sizes of the object being animated and its parent are known, and before calling getTransformation(long, Transformation).

Parameters
width Width of the object being animated
height Height of the object being animated
parentWidth Width of the animated object's parent
parentHeight Height of the animated object's parent

public boolean isFillEnabled ()

If fillEnabled is true, this animation will apply fillBefore and fillAfter.

Related XML Attributes
Returns
  • true if the animation will take fillBefore and fillAfter into account

public boolean isInitialized ()

Whether or not the animation has been initialized.

Returns
  • Has this animation been initialized.

public void reset ()

Reset the initialization state of this animation.

public void restrictDuration (long durationMillis)

Ensure that the duration that this animation will run is not longer than durationMillis. In addition to adjusting the duration itself, this ensures that the repeat count also will not make it run longer than the given time.

Parameters
durationMillis The maximum duration the animation is allowed to run.

public void scaleCurrentDuration (float scale)

How much to scale the duration by.

Parameters
scale The amount to scale the duration.

public void setAnimationListener (Animation.AnimationListener listener)

Binds an animation listener to this animation. The animation listener is notified of animation events such as the end of the animation or the repetition of the animation.

Parameters
listener the animation listener to be notified

public void setDuration (long durationMillis)

How long this animation should last. The duration cannot be negative.

Related XML Attributes
Parameters
durationMillis Duration in milliseconds

public void setFillAfter (boolean fillAfter)

If fillAfter is true, the transformation that this animation performed will persist when it is finished. Defaults to false if not set. Note that this applies when using an AnimationSet to chain animations. The transformation is not applied before the AnimationSet itself starts.

Related XML Attributes
Parameters
fillAfter true if the animation should apply its transformation after it ends

public void setFillBefore (boolean fillBefore)

If fillBefore is true, this animation will apply its transformation before the start time of the animation. Defaults to true if not set. Note that this applies when using an AnimationSet to chain animations. The transformation is not applied before the AnimationSet itself starts.

Related XML Attributes
Parameters
fillBefore true if the animation should apply its transformation before it starts

public void setFillEnabled (boolean fillEnabled)

If fillEnabled is true, the animation will apply the value of fillBefore and fillAfter. Otherwise, fillBefore and fillAfter are ignored and the animation transformation is always applied.

Related XML Attributes
Parameters
fillEnabled true if the animation should take fillBefore and fillAfter into account

public void setInterpolator (Context context, int resID)

Sets the acceleration curve for this animation. The interpolator is loaded as a resource from the specified context.

Related XML Attributes
Parameters
context The application environment
resID The resource identifier of the interpolator to load

public void setInterpolator (Interpolator i)

Sets the acceleration curve for this animation. Defaults to a linear interpolation.

Related XML Attributes
Parameters
i The interpolator which defines the acceleration curve

public void setRepeatCount (int repeatCount)

Sets how many times the animation should be repeated. If the repeat count is 0, the animation is never repeated. If the repeat count is greater than 0 or INFINITE, the repeat mode will be taken into account. The repeat count is 0 by default.

Related XML Attributes
Parameters
repeatCount the number of times the animation should be repeated

public void setRepeatMode (int repeatMode)

Defines what this animation should do when it reaches the end. This setting is applied only when the repeat count is either greater than 0 or INFINITE. Defaults to RESTART.

Related XML Attributes
Parameters
repeatMode RESTART or REVERSE

public void setStartOffset (long startOffset)

When this animation should start relative to the start time. This is most useful when composing complex animations using an AnimationSet where some of the animations components start at different times.

Related XML Attributes
Parameters
startOffset When this Animation should start, in milliseconds from the start time of the root AnimationSet.

public void setStartTime (long startTimeMillis)

When this animation should start. When the start time is set to START_ON_FIRST_FRAME, the animation will start the first time getTransformation(long, Transformation) is invoked. The time passed to this method should be obtained by calling currentAnimationTimeMillis() instead of currentTimeMillis().

Parameters
startTimeMillis the start time in milliseconds

public void setZAdjustment (int zAdjustment)

Set the Z ordering mode to use while running the animation.

Related XML Attributes
Parameters
zAdjustment The desired mode, one of ZORDER_NORMAL, ZORDER_TOP, or ZORDER_BOTTOM.

public void start ()

Convenience method to start the animation the first time getTransformation(long, Transformation) is invoked.

public void startNow ()

Convenience method to start the animation at the current time in milliseconds.

public boolean willChangeBounds ()

Indicates whether or not this animation will affect the bounds of the animated view. For instance, a fade animation will not affect the bounds whereas a 200% scale animation will.

Returns
  • true if this animation will change the view's bounds

public boolean willChangeTransformationMatrix ()

Indicates whether or not this animation will affect the transformation matrix. For instance, a fade animation will not affect the matrix whereas a scale animation will.

Returns
  • true if this animation will change the transformation matrix

Protected Methods

protected void applyTransformation (float interpolatedTime, Transformation t)

Helper for getTransformation. Subclasses should implement this to apply their transforms given an interpolation value. Implementations of this method should always replace the specified Transformation or document they are doing otherwise.

Parameters
interpolatedTime The value of the normalized time (0.0 to 1.0) after it has been run through the interpolation function.
t The Transofrmation object to fill in with the current transforms.

protected Animation clone ()

Creates and returns a copy of this Object. The default implementation returns a so-called "shallow" copy: It creates a new instance of the same class and then copies the field values (including object references) from this instance to the new instance. A "deep" copy, in contrast, would also recursively clone nested objects. A subclass that needs to implement this kind of cloning should call super.clone() to create the new instance and then create deep copies of the nested, mutable objects.

Returns
  • a copy of this object.

protected void ensureInterpolator ()

Gurantees that this animation has an interpolator. Will use a AccelerateDecelerateInterpolator is nothing else was specified.

protected float resolveSize (int type, float value, int size, int parentSize)

Convert the information in the description of a size to an actual dimension

Parameters
type One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
value The dimension associated with the type parameter
size The size of the object being animated
parentSize The size of the parent of the object being animated
Returns
  • The dimension to use for the animation