Skip to content

Most visited

Recently visited

navigation
added in version 22.1.0
belongs to Maven artifact com.android.support:support-compat:27.0.0

DrawableCompat

public final class DrawableCompat
extends Object

java.lang.Object
   ↳ android.support.v4.graphics.drawable.DrawableCompat


Helper for accessing features in Drawable.

Summary

Public methods

static void applyTheme(Drawable drawable, Resources.Theme theme)

Applies the specified theme to this Drawable and its children.

static boolean canApplyTheme(Drawable drawable)

Whether a theme can be applied to this Drawable and its children.

static void clearColorFilter(Drawable drawable)

Removes the color filter from the given drawable.

static int getAlpha(Drawable drawable)

Get the alpha value of the drawable.

static ColorFilter getColorFilter(Drawable drawable)

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

static int getLayoutDirection(Drawable drawable)

Returns the resolved layout direction for this Drawable.

static void inflate(Drawable drawable, Resources res, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)

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

static boolean isAutoMirrored(Drawable drawable)

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

static void jumpToCurrentState(Drawable drawable)

This method was deprecated in API level 27.0.0. Use jumpToCurrentState() directly.

static void setAutoMirrored(Drawable drawable, boolean mirrored)

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

static void setHotspot(Drawable drawable, float x, float y)

Specifies the hotspot's location within the drawable.

static void setHotspotBounds(Drawable drawable, 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.

static boolean setLayoutDirection(Drawable drawable, int layoutDirection)

Set the layout direction for this drawable.

static void setTint(Drawable drawable, int tint)

Specifies a tint for drawable.

static void setTintList(Drawable drawable, ColorStateList tint)

Specifies a tint for drawable as a color state list.

static void setTintMode(Drawable drawable, PorterDuff.Mode tintMode)

Specifies a tint blending mode for drawable.

static <T extends Drawable> T unwrap(Drawable drawable)

Unwrap drawable if it is the result of a call to wrap(Drawable).

static Drawable wrap(Drawable drawable)

Potentially wrap drawable so that it may be used for tinting across the different API levels, via the tinting methods in this class.

Inherited methods

From class java.lang.Object

Public methods

applyTheme

added in version 24.1.0
void applyTheme (Drawable drawable, 
                Resources.Theme theme)

Applies the specified theme to this Drawable and its children.

Parameters
drawable Drawable

theme Resources.Theme

canApplyTheme

added in version 24.1.0
boolean canApplyTheme (Drawable drawable)

Whether a theme can be applied to this Drawable and its children.

Parameters
drawable Drawable

Returns
boolean

clearColorFilter

added in version 25.1.0
void clearColorFilter (Drawable drawable)

Removes the color filter from the given drawable.

Parameters
drawable Drawable

getAlpha

added in version 24.1.0
int getAlpha (Drawable drawable)

Get the alpha value of the drawable. 0 means fully transparent, 255 means fully opaque.

Parameters
drawable Drawable: The Drawable against which to invoke the method.

Returns
int

getColorFilter

added in version 24.1.0
ColorFilter getColorFilter (Drawable drawable)

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

Parameters
drawable Drawable

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

getLayoutDirection

added in version 24.1.0
int getLayoutDirection (Drawable drawable)

Returns the resolved layout direction for this Drawable.

Parameters
drawable Drawable

Returns
int One of LAYOUT_DIRECTION_LTR, LAYOUT_DIRECTION_RTL

See also:

inflate

added in version 24.1.0
void inflate (Drawable drawable, 
                Resources res, 
                XmlPullParser parser, 
                AttributeSet attrs, 
                Resources.Theme theme)

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

Parameters
drawable Drawable

res Resources: Resources used to resolve attribute values

parser XmlPullParser: XML parser from which to inflate this Drawable

attrs AttributeSet: Base set of attribute values

theme Resources.Theme: Theme to apply, may be null

Throws
XmlPullParserException
IOException
XmlPullParserException

isAutoMirrored

added in version 22.1.0
boolean isAutoMirrored (Drawable drawable)

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

If running on a pre-KITKAT device this method returns false.

Parameters
drawable Drawable: The Drawable against which to invoke the method.

Returns
boolean boolean Returns true if this Drawable will be automatically mirrored.

jumpToCurrentState

added in version 22.1.0
void jumpToCurrentState (Drawable drawable)

This method was deprecated in API level 27.0.0.
Use jumpToCurrentState() directly.

Call Drawable.jumpToCurrentState().

Parameters
drawable Drawable: The Drawable against which to invoke the method.

setAutoMirrored

added in version 22.1.0
void setAutoMirrored (Drawable drawable, 
                boolean mirrored)

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

If running on a pre-KITKAT device this method does nothing.

Parameters
drawable Drawable: The Drawable against which to invoke the method.

mirrored boolean: Set to true if the Drawable should be mirrored, false if not.

setHotspot

added in version 22.1.0
void setHotspot (Drawable drawable, 
                float x, 
                float y)

Specifies the hotspot's location within the drawable.

Parameters
drawable Drawable: The Drawable against which to invoke the method.

x float: The X coordinate of the center of the hotspot

y float: The Y coordinate of the center of the hotspot

setHotspotBounds

added in version 22.1.0
void setHotspotBounds (Drawable drawable, 
                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.

Parameters
drawable Drawable: The Drawable against which to invoke the method.

left int

top int

right int

bottom int

setLayoutDirection

added in version 24.1.0
boolean setLayoutDirection (Drawable drawable, 
                int layoutDirection)

Set the layout direction for this drawable. Should be a resolved layout direction, as the Drawable has no capacity to do the resolution on its own.

Parameters
drawable Drawable

layoutDirection int: the resolved layout direction for the drawable, either LAYOUT_DIRECTION_LTR or LAYOUT_DIRECTION_RTL

Returns
boolean true if the layout direction change has caused the appearance of the drawable to change such that it needs to be re-drawn, false otherwise

See also:

setTint

added in version 22.1.0
void setTint (Drawable drawable, 
                int tint)

Specifies a tint for drawable.

Parameters
drawable Drawable: The Drawable against which to invoke the method.

tint int: Color to use for tinting this drawable

setTintList

added in version 22.1.0
void setTintList (Drawable drawable, 
                ColorStateList tint)

Specifies a tint for drawable as a color state list.

Parameters
drawable Drawable: The Drawable against which to invoke the method.

tint ColorStateList: Color state list to use for tinting this drawable, or null to clear the tint

setTintMode

added in version 22.1.0
void setTintMode (Drawable drawable, 
                PorterDuff.Mode tintMode)

Specifies a tint blending mode for drawable.

Parameters
drawable Drawable: The Drawable against which to invoke the method.

tintMode PorterDuff.Mode: A Porter-Duff blending mode

unwrap

added in version 22.1.0
T unwrap (Drawable drawable)

Unwrap drawable if it is the result of a call to wrap(Drawable). If the drawable is not the result of a call to wrap(Drawable) then drawable is returned as-is.

Parameters
drawable Drawable: The drawable to unwrap

Returns
T the unwrapped Drawable or drawable if it hasn't been wrapped.

See also:

wrap

added in version 22.1.0
Drawable wrap (Drawable drawable)

Potentially wrap drawable so that it may be used for tinting across the different API levels, via the tinting methods in this class.

If the given drawable is wrapped, we will copy over certain state over to the wrapped drawable, such as its bounds, level, visibility and state.

You must use the result of this call. If the given drawable is being used by a view (as its background for instance), you must replace the original drawable with the result of this call:

 Drawable bg = DrawableCompat.wrap(view.getBackground());
 // Need to set the background with the wrapped drawable
 view.setBackground(bg);

 // You can now tint the drawable
 DrawableCompat.setTint(bg, ...);
 

If you need to get hold of the original Drawable again, you can use the value returned from unwrap(Drawable).

Parameters
drawable Drawable: The Drawable to process

Returns
Drawable A drawable capable of being tinted across all API levels.

See also:

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)