TransitionDrawable


public class TransitionDrawable
extends LayerDrawable implements Drawable.Callback

java.lang.Object
   ↳ android.graphics.drawable.Drawable
     ↳ android.graphics.drawable.LayerDrawable
       ↳ android.graphics.drawable.TransitionDrawable


An extension of LayerDrawables that is intended to cross-fade between the first and second layer. To start the transition, call startTransition(int). To display just the first layer, call resetTransition().

It can be defined in an XML file with the <transition> element. Each Drawable in the transition is defined in a nested <item>. For more information, see the guide to Drawable Resources.

Summary

XML attributes

android:bottom Bottom inset to apply to the layer. 
android:drawable Drawable used to render the layer. 
android:id Identifier of the layer. 
android:left Left inset to apply to the layer. 
android:right Right inset to apply to the layer. 
android:top Top inset to apply to the layer. 

Inherited XML attributes

android:bottom Bottom inset to apply to the layer. 
android:drawable Drawable used to render the layer. 
android:end End inset to apply to the layer. 
android:gravity Gravity used to align the layer within its container. 
android:height Height of the layer. 
android:id Identifier of the layer. 
android:left Left inset to apply to the layer. 
android:paddingBottom Explicit bottom padding. 
android:paddingEnd Explicit end padding. 
android:paddingLeft Explicit left padding. 
android:paddingMode Indicates how layer padding should affect the bounds of subsequent layers. 
android:paddingRight Explicit right padding. 
android:paddingStart Explicit start padding. 
android:paddingTop Explicit top padding. 
android:right Right inset to apply to the layer. 
android:start Start inset to apply to the layer. 
android:top Top inset to apply to the layer. 
android:width Width of the layer. 

Inherited constants

int INSET_UNDEFINED

Value used for undefined start and end insets.

int PADDING_MODE_NEST

Padding mode used to nest each layer inside the padding of the previous layer.

int PADDING_MODE_STACK

Padding mode used to stack each layer directly atop the previous layer.

Public constructors

TransitionDrawable(Drawable[] layers)

Create a new transition drawable with the specified list of layers.

Public methods

void draw(Canvas canvas)

Draw in its bounds (set via setBounds) respecting optional effects such as alpha (set via setAlpha) and color filter (set via setColorFilter).

boolean isCrossFadeEnabled()

Indicates whether the cross fade is enabled for this transition.

void resetTransition()

Show only the first layer.

void reverseTransition(int duration)

Reverses the transition, picking up where the transition currently is.

void setCrossFadeEnabled(boolean enabled)

Enables or disables the cross fade of the drawables.

void startTransition(int durationMillis)

Begin the second layer on top of the first layer.

Inherited methods

int addLayer(Drawable dr)

Adds a new layer containing the specified drawable to the end of the layer list and returns its index.

void applyTheme(Resources.Theme t)

Applies the specified theme to this Drawable and its children.

boolean canApplyTheme()
void draw(Canvas canvas)

Draw in its bounds (set via setBounds) respecting optional effects such as alpha (set via setAlpha) and color filter (set via setColorFilter).

Drawable findDrawableByLayerId(int id)

Looks for a layer with the given ID and returns its Drawable.

int findIndexByLayerId(int id)

Returns the layer with the specified id.

int getAlpha()

Gets the current alpha value for the drawable.

int getBottomPadding()

Returns the bottom padding in pixels.

int getChangingConfigurations()

Return a mask of the configuration parameters for which this drawable may change, requiring that it be re-created.

Drawable.ConstantState getConstantState()

Return a ConstantState instance that holds the shared state of this Drawable.

Drawable getDrawable(int index)

Returns the drawable for the layer at the specified index.

int getEndPadding()

Returns the end padding in pixels.

void getHotspotBounds(Rect outRect)

Populates outRect with the hotspot bounds.

int getId(int index)

Returns the ID of the specified layer.

int getIntrinsicHeight()

Returns the drawable's intrinsic height.

int getIntrinsicWidth()

Returns the drawable's intrinsic width.

int getLayerGravity(int index)
int getLayerHeight(int index)
int getLayerInsetBottom(int index)
int getLayerInsetEnd(int index)
int getLayerInsetLeft(int index)
int getLayerInsetRight(int index)
int getLayerInsetStart(int index)
int getLayerInsetTop(int index)
int getLayerWidth(int index)
int getLeftPadding()

Returns the left padding in pixels.

int getNumberOfLayers()

Returns the number of layers contained within this layer drawable.

int getOpacity()

This method is deprecated. This method is no longer used in graphics optimizations

void getOutline(Outline outline)

Populates outline with the first available (non-empty) layer outline.

boolean getPadding(Rect padding)

Return in padding the insets suggested by this Drawable for placing content inside the drawable's bounds.

int getPaddingMode()
int getRightPadding()

Returns the right padding in pixels.

int getStartPadding()

Returns the start padding in pixels.

int getTopPadding()

Returns the top padding in pixels.

boolean hasFocusStateSpecified()

Indicates whether this drawable has at least one state spec explicitly specifying R.attr.state_focused.

void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)

Inflate this Drawable from an XML resource optionally styled by a theme.

void invalidateDrawable(Drawable who)

Called when the drawable needs to be redrawn.

boolean isAutoMirrored()

Tells if this Drawable will be automatically mirrored when its layout direction is RTL right-to-left.

boolean isStateful()

Indicates whether this drawable will change its appearance based on state.

void jumpToCurrentState()

If this Drawable does transition animations between states, ask that it immediately jump to the current state and skip any active animations.

Drawable mutate()

Make this drawable mutable.

void onBoundsChange(Rect bounds)

Override this in your subclass to change appearance if you vary based on the bounds.

boolean onLayoutDirectionChanged(int layoutDirection)

Called when the drawable's resolved layout direction changes.

boolean onLevelChange(int level)

Override this in your subclass to change appearance if you vary based on level.

boolean onStateChange(int[] state)

Override this in your subclass to change appearance if you recognize the specified state.

void scheduleDrawable(Drawable who, Runnable what, long when)

A Drawable can call this to schedule the next frame of its animation.

void setAlpha(int alpha)

Specify an alpha value for the drawable.

void setAutoMirrored(boolean mirrored)

Set whether this Drawable is automatically mirrored when its layout direction is RTL (right-to left).

void setColorFilter(ColorFilter colorFilter)

Specify an optional color filter for the drawable.

void setDither(boolean dither)

This method is deprecated. This property is ignored.

void setDrawable(int index, Drawable drawable)

Sets the drawable for the layer at the specified index.

boolean setDrawableByLayerId(int id, Drawable drawable)

Replaces the Drawable for the layer with the given id.

void setHotspot(float x, float y)

Specifies the hotspot's location within the drawable.

void setHotspotBounds(int left, int top, int right, int bottom)

Sets the bounds to which the hotspot is constrained, if they should be different from the drawable bounds.

void setId(int index, int id)

Sets the ID of a layer.

void setLayerGravity(int index, int gravity)

Sets the gravity used to position or stretch the specified layer within its container.

void setLayerHeight(int index, int h)
void setLayerInset(int index, int l, int t, int r, int b)

Specifies the insets in pixels for the drawable at the specified index.

void setLayerInsetBottom(int index, int b)
void setLayerInsetEnd(int index, int e)
void setLayerInsetLeft(int index, int l)
void setLayerInsetRelative(int index, int s, int t, int e, int b)

Specifies the relative insets in pixels for the drawable at the specified index.

void setLayerInsetRight(int index, int r)
void setLayerInsetStart(int index, int s)
void setLayerInsetTop(int index, int t)
void setLayerSize(int index, int w, int h)

Sets an explicit size for the specified layer.

void setLayerWidth(int index, int w)
void setOpacity(int opacity)

Sets the opacity of this drawable directly instead of collecting the states from the layers.

void setPadding(int left, int top, int right, int bottom)

Sets the absolute padding.

void setPaddingMode(int mode)

Specifies how layer padding should affect the bounds of subsequent layers.

void setPaddingRelative(int start, int top, int end, int bottom)

Sets the relative padding.

void setTintBlendMode(BlendMode blendMode)

Specifies a tint blending mode for this drawable.

void setTintList(ColorStateList tint)

Specifies tint color for this drawable as a color state list.

boolean setVisible(boolean visible, boolean restart)

Set whether this Drawable is visible.

void unscheduleDrawable(Drawable who, Runnable what)

A Drawable can call this to unschedule an action previously scheduled with scheduleDrawable(Drawable, Runnable, long).

void applyTheme(Resources.Theme t)

Applies the specified theme to this Drawable and its children.

boolean canApplyTheme()
void clearColorFilter()

Removes the color filter for this drawable.

final Rect copyBounds()

Return a copy of the drawable's bounds in a new Rect.

final void copyBounds(Rect bounds)

Return a copy of the drawable's bounds in the specified Rect (allocated by the caller).

static Drawable createFromPath(String pathName)

Create a drawable from file path name.

static Drawable createFromResourceStream(Resources res, TypedValue value, InputStream is, String srcName, BitmapFactory.Options opts)

This method was deprecated in API level 28. Prefer the version without an Options object.

static Drawable createFromResourceStream(Resources res, TypedValue value, InputStream is, String srcName)

Create a drawable from an inputstream, using the given resources and value to determine density information.

static Drawable createFromStream(InputStream is, String srcName)

Create a drawable from an inputstream

static Drawable createFromXml(Resources r, XmlPullParser parser)

Create a drawable from an XML document.

static Drawable createFromXml(Resources r, XmlPullParser parser, Resources.Theme theme)

Create a drawable from an XML document using an optional Theme.

static Drawable createFromXmlInner(Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)

Create a drawable from inside an XML document using an optional Theme.

static Drawable createFromXmlInner(Resources r, XmlPullParser parser, AttributeSet attrs)

Create from inside an XML document.

abstract void draw(Canvas canvas)

Draw in its bounds (set via setBounds) respecting optional effects such as alpha (set via setAlpha) and color filter (set via setColorFilter).

int getAlpha()

Gets the current alpha value for the drawable.

final Rect getBounds()

Return the drawable's bounds Rect.

Drawable.Callback getCallback()

Return the current Callback implementation attached to this Drawable.

int getChangingConfigurations()

Return a mask of the configuration parameters for which this drawable may change, requiring that it be re-created.

ColorFilter getColorFilter()

Returns the current color filter, or null if none set.

Drawable.ConstantState getConstantState()

Return a ConstantState instance that holds the shared state of this Drawable.

Drawable getCurrent()
Rect getDirtyBounds()

Return the drawable's dirty bounds Rect.

void getHotspotBounds(Rect outRect)

Populates outRect with the hotspot bounds.

int getIntrinsicHeight()

Returns the drawable's intrinsic height.

int getIntrinsicWidth()

Returns the drawable's intrinsic width.

int getLayoutDirection()

Returns the resolved layout direction for this Drawable.

final int getLevel()

Retrieve the current level.

int getMinimumHeight()

Returns the minimum height suggested by this Drawable.

int getMinimumWidth()

Returns the minimum width suggested by this Drawable.

abstract int getOpacity()

This method was deprecated in API level 29. This method is no longer used in graphics optimizations

Insets getOpticalInsets()

Return in insets the layout insets suggested by this Drawable for use with alignment operations during layout.

void getOutline(Outline outline)

Called to get the drawable to populate the Outline that defines its drawing area.

boolean getPadding(Rect padding)

Return in padding the insets suggested by this Drawable for placing content inside the drawable's bounds.

int[] getState()

Describes the current state, as a union of primitive states, such as R.attr.state_focused, R.attr.state_selected, etc.

Region getTransparentRegion()

Returns a Region representing the part of the Drawable that is completely transparent.

boolean hasFocusStateSpecified()

Indicates whether this drawable has at least one state spec explicitly specifying R.attr.state_focused.

void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)

Inflate this Drawable from an XML resource optionally styled by a theme.

void inflate(Resources r, XmlPullParser parser, AttributeSet attrs)

Inflate this Drawable from an XML resource.

void invalidateSelf()

Use the current Callback implementation to have this Drawable redrawn.

boolean isAutoMirrored()

Tells if this Drawable will be automatically mirrored when its layout direction is RTL right-to-left.

boolean isFilterBitmap()
boolean isProjected()

Whether this drawable requests projection.

boolean isStateful()

Indicates whether this drawable will change its appearance based on state.

final boolean isVisible()
void jumpToCurrentState()

If this Drawable does transition animations between states, ask that it immediately jump to the current state and skip any active animations.

Drawable mutate()

Make this drawable mutable.

void onBoundsChange(Rect bounds)

Override this in your subclass to change appearance if you vary based on the bounds.

boolean onLayoutDirectionChanged(int layoutDirection)

Called when the drawable's resolved layout direction changes.

boolean onLevelChange(int level)

Override this in your subclass to change appearance if you vary based on level.

boolean onStateChange(int[] state)

Override this in your subclass to change appearance if you recognize the specified state.

static int resolveOpacity(int op1, int op2)

Return the appropriate opacity value for two source opacities.

void scheduleSelf(Runnable what, long when)

Use the current Callback implementation to have this Drawable scheduled.

abstract void setAlpha(int alpha)

Specify an alpha value for the drawable.

void setAutoMirrored(boolean mirrored)

Set whether this Drawable is automatically mirrored when its layout direction is RTL (right-to left).

void setBounds(int left, int top, int right, int bottom)

Specify a bounding rectangle for the Drawable.

void setBounds(Rect bounds)

Specify a bounding rectangle for the Drawable.

final void setCallback(Drawable.Callback cb)

Bind a Callback object to this Drawable.

void setChangingConfigurations(int configs)

Set a mask of the configuration parameters for which this drawable may change, requiring that it be re-created.

void setColorFilter(int color, PorterDuff.Mode mode)

This method was deprecated in API level 29. use setColorFilter(android.graphics.ColorFilter) with an instance of BlendModeColorFilter

abstract void setColorFilter(ColorFilter colorFilter)

Specify an optional color filter for the drawable.

void setDither(boolean dither)

This method was deprecated in API level 23. This property is ignored.

void setFilterBitmap(boolean filter)

Set to true to have the drawable filter its bitmaps with bilinear sampling when they are scaled or rotated.

void setHotspot(float x, float y)

Specifies the hotspot's location within the drawable.

void setHotspotBounds(int left, int top, int right, int bottom)

Sets the bounds to which the hotspot is constrained, if they should be different from the drawable bounds.

final boolean setLayoutDirection(int layoutDirection)

Set the layout direction for this drawable.

final boolean setLevel(int level)

Specify the level for the drawable.

boolean setState(int[] stateSet)

Specify a set of states for the drawable.

void setTint(int tintColor)

Specifies tint color for this drawable.

void setTintBlendMode(BlendMode blendMode)

Specifies a tint blending mode for this drawable.

void setTintList(ColorStateList tint)

Specifies tint color for this drawable as a color state list.

void setTintMode(PorterDuff.Mode tintMode)

Specifies a tint blending mode for this drawable.

boolean setVisible(boolean visible, boolean restart)

Set whether this Drawable is visible.

void unscheduleSelf(Runnable what)

Use the current Callback implementation to have this Drawable unscheduled.

Object clone()

Creates and returns a copy of this object.

boolean equals(Object obj)

Indicates whether some other object is "equal to" this one.

void finalize()

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

final Class<?> getClass()

Returns the runtime class of this Object.

int hashCode()

Returns a hash code value for the object.

final void notify()

Wakes up a single thread that is waiting on this object's monitor.

final void notifyAll()

Wakes up all threads that are waiting on this object's monitor.

String toString()

Returns a string representation of the object.

final void wait(long timeoutMillis, int nanos)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait(long timeoutMillis)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait()

Causes the current thread to wait until it is awakened, typically by being notified or interrupted.

abstract void invalidateDrawable(Drawable who)

Called when the drawable needs to be redrawn.

abstract void scheduleDrawable(Drawable who, Runnable what, long when)

A Drawable can call this to schedule the next frame of its animation.

abstract void unscheduleDrawable(Drawable who, Runnable what)

A Drawable can call this to unschedule an action previously scheduled with scheduleDrawable(Drawable, Runnable, long).

XML attributes

android:bottom

Bottom inset to apply to the layer.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

android:drawable

Drawable used to render the layer.

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

android:id

Identifier of the layer. This can be used to retrieve the layer from a drawable container.

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

android:left

Left inset to apply to the layer.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

android:right

Right inset to apply to the layer.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

android:top

Top inset to apply to the layer.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

Public constructors

TransitionDrawable

Added in API level 3
public TransitionDrawable (Drawable[] layers)

Create a new transition drawable with the specified list of layers. At least 2 layers are required for this drawable to work properly.

Parameters
layers Drawable

Public methods

draw

Added in API level 1
public void draw (Canvas canvas)

Draw in its bounds (set via setBounds) respecting optional effects such as alpha (set via setAlpha) and color filter (set via setColorFilter).

Parameters
canvas Canvas: The canvas to draw into This value cannot be null.

isCrossFadeEnabled

Added in API level 1
public boolean isCrossFadeEnabled ()

Indicates whether the cross fade is enabled for this transition.

Returns
boolean True if cross fading is enabled, false otherwise.

resetTransition

Added in API level 1
public void resetTransition ()

Show only the first layer.

reverseTransition

Added in API level 1
public void reverseTransition (int duration)

Reverses the transition, picking up where the transition currently is. If the transition is not currently running, this will start the transition with the specified duration. If the transition is already running, the last known duration will be used.

Parameters
duration int: The duration to use if no transition is running.

setCrossFadeEnabled

Added in API level 1
public void setCrossFadeEnabled (boolean enabled)

Enables or disables the cross fade of the drawables. When cross fade is disabled, the first drawable is always drawn opaque. With cross fade enabled, the first drawable is drawn with the opposite alpha of the second drawable. Cross fade is disabled by default.

Parameters
enabled boolean: True to enable cross fading, false otherwise.

startTransition

Added in API level 1
public void startTransition (int durationMillis)

Begin the second layer on top of the first layer.

Parameters
durationMillis int: The length of the transition in milliseconds