Skip to content

Most visited

Recently visited

navigation
added in version 24.1.0
belongs to Maven artifact com.android.support:support-vector-drawable:27.0.0

VectorDrawableCompat

public class VectorDrawableCompat
extends Drawable

java.lang.Object
   ↳ android.graphics.drawable.Drawable
     ↳ android.support.graphics.drawable.VectorDrawableCompat


For API 24 and above, this class is delegating to the framework's VectorDrawable. For older API version, this class lets you create a drawable based on an XML vector graphic.

You can always create a VectorDrawableCompat object and use it as a Drawable by the Java API. In order to refer to VectorDrawableCompat inside a XML file, you can use app:srcCompat attribute in AppCompat library's ImageButton or ImageView.

Note: To optimize for the re-drawing performance, one bitmap cache is created for each VectorDrawableCompat. Therefore, referring to the same VectorDrawableCompat means sharing the same bitmap cache. If these references don't agree upon on the same size, the bitmap will be recreated and redrawn every time size is changed. In other words, if a VectorDrawable is used for different sizes, it is more efficient to create multiple VectorDrawables, one for each size.

VectorDrawableCompat can be defined in an XML file with the <vector> element.

The VectorDrawableCompat has the following elements:

<vector>
Used to define a vector drawable
android:name
Defines the name of this vector drawable.
android:width
Used to define the intrinsic width of the drawable. This support all the dimension units, normally specified with dp.
android:height
Used to define the intrinsic height the drawable. This support all the dimension units, normally specified with dp.
android:viewportWidth
Used to define the width of the viewport space. Viewport is basically the virtual canvas where the paths are drawn on.
android:viewportHeight
Used to define the height of the viewport space. Viewport is basically the virtual canvas where the paths are drawn on.
android:tint
The color to apply to the drawable as a tint. By default, no tint is applied.
android:tintMode
The Porter-Duff blending mode for the tint color. Default is src_in.
android:autoMirrored
Indicates if the drawable needs to be mirrored when its layout direction is RTL (right-to-left). Default is false.
android:alpha
The opacity of this drawable. Default is 1.
<group>
Defines a group of paths or subgroups, plus transformation information. The transformations are defined in the same coordinates as the viewport. And the transformations are applied in the order of scale, rotate then translate.
android:name
Defines the name of the group.
android:rotation
The degrees of rotation of the group. Default is 0.
android:pivotX
The X coordinate of the pivot for the scale and rotation of the group. This is defined in the viewport space. Default is 0.
android:pivotY
The Y coordinate of the pivot for the scale and rotation of the group. This is defined in the viewport space. Default is 0.
android:scaleX
The amount of scale on the X Coordinate. Default is 1.
android:scaleY
The amount of scale on the Y coordinate. Default is 1.
android:translateX
The amount of translation on the X coordinate. This is defined in the viewport space. Default is 0.
android:translateY
The amount of translation on the Y coordinate. This is defined in the viewport space. Default is 0.
<path>
Defines paths to be drawn.
android:name
Defines the name of the path.
android:pathData
Defines path data using exactly same format as "d" attribute in the SVG's path data. This is defined in the viewport space.
android:fillColor
Specifies the color used to fill the path. If this property is animated, any value set by the animation will override the original value. No path fill is drawn if this property is not specified.
android:strokeColor
Specifies the color used to draw the path outline. If this property is animated, any value set by the animation will override the original value. No path outline is drawn if this property is not specified.
android:strokeWidth
The width a path stroke. Default is 0.
android:strokeAlpha
The opacity of a path stroke. Default is 1.
android:fillAlpha
The opacity to fill the path with. Default is 1.
android:trimPathStart
The fraction of the path to trim from the start, in the range from 0 to 1. Default is 0.
android:trimPathEnd
The fraction of the path to trim from the end, in the range from 0 to 1. Default is 1.
android:trimPathOffset
Shift trim region (allows showed region to include the start and end), in the range from 0 to 1. Default is 0.
android:strokeLineCap
Sets the linecap for a stroked path: butt, round, square. Default is butt.
android:strokeLineJoin
Sets the lineJoin for a stroked path: miter,round,bevel. Default is miter.
android:strokeMiterLimit
Sets the Miter limit for a stroked path. Default is 4.
<clip-path>
Defines path to be the current clip. Note that the clip path only apply to the current group and its children.
android:name
Defines the name of the clip path.
android:pathData
Defines clip path using the same format as "d" attribute in the SVG's path data.

Note that theme attributes in XML file are supported through inflate(Resources, XmlPullParser, AttributeSet, Theme).

Summary

Public methods

void applyTheme(Resources.Theme t)
boolean canApplyTheme()
void clearColorFilter()
static VectorDrawableCompat create(Resources res, int resId, Resources.Theme theme)

Create a VectorDrawableCompat object.

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

Create a VectorDrawableCompat from inside an XML document using an optional Resources.Theme.

void draw(Canvas canvas)
int getAlpha()
int getChangingConfigurations()
ColorFilter getColorFilter()
Drawable.ConstantState getConstantState()
Drawable getCurrent()
int getIntrinsicHeight()
int getIntrinsicWidth()
int getMinimumHeight()
int getMinimumWidth()
int getOpacity()
boolean getPadding(Rect padding)
int[] getState()
Region getTransparentRegion()
void inflate(Resources res, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)
void inflate(Resources res, XmlPullParser parser, AttributeSet attrs)
void invalidateSelf()
boolean isAutoMirrored()
boolean isStateful()
void jumpToCurrentState()
Drawable mutate()
void scheduleSelf(Runnable what, long when)
void setAlpha(int alpha)
void setAutoMirrored(boolean mirrored)
void setChangingConfigurations(int configs)
void setColorFilter(ColorFilter colorFilter)
void setColorFilter(int color, PorterDuff.Mode mode)
void setFilterBitmap(boolean filter)
void setHotspot(float x, float y)
void setHotspotBounds(int left, int top, int right, int bottom)
boolean setState(int[] stateSet)
void setTint(int tint)
void setTintList(ColorStateList tint)
void setTintMode(PorterDuff.Mode tintMode)
boolean setVisible(boolean visible, boolean restart)
void unscheduleSelf(Runnable what)

Protected methods

void onBoundsChange(Rect bounds)
boolean onLevelChange(int level)
boolean onStateChange(int[] stateSet)

Inherited methods

From class android.graphics.drawable.Drawable
From class java.lang.Object

Public methods

applyTheme

void applyTheme (Resources.Theme t)

Parameters
t Resources.Theme

canApplyTheme

boolean canApplyTheme ()

Returns
boolean

clearColorFilter

void clearColorFilter ()

create

added in version 24.1.0
VectorDrawableCompat create (Resources res, 
                int resId, 
                Resources.Theme theme)

Create a VectorDrawableCompat object.

Parameters
res Resources: the resources.

resId int: the resource ID for VectorDrawableCompat object.

theme Resources.Theme: the theme of this vector drawable, it can be null.

Returns
VectorDrawableCompat a new VectorDrawableCompat or null if parsing error is found.

createFromXmlInner

added in version 24.1.0
VectorDrawableCompat createFromXmlInner (Resources r, 
                XmlPullParser parser, 
                AttributeSet attrs, 
                Resources.Theme theme)

Create a VectorDrawableCompat from inside an XML document using an optional Resources.Theme. Called on a parser positioned at a tag in an XML document, tries to create a Drawable from that tag. Returns null if the tag is not a valid drawable.

Parameters
r Resources

parser XmlPullParser

attrs AttributeSet

theme Resources.Theme

Returns
VectorDrawableCompat

Throws
XmlPullParserException
IOException

draw

added in version 24.1.0
void draw (Canvas canvas)

Parameters
canvas Canvas

getAlpha

int getAlpha ()

Returns
int

getChangingConfigurations

int getChangingConfigurations ()

Returns
int

getColorFilter

ColorFilter getColorFilter ()

Returns
ColorFilter

getConstantState

Drawable.ConstantState getConstantState ()

Returns
Drawable.ConstantState

getCurrent

Drawable getCurrent ()

Returns
Drawable

getIntrinsicHeight

int getIntrinsicHeight ()

Returns
int

getIntrinsicWidth

int getIntrinsicWidth ()

Returns
int

getMinimumHeight

int getMinimumHeight ()

Returns
int

getMinimumWidth

int getMinimumWidth ()

Returns
int

getOpacity

added in version 24.1.0
int getOpacity ()

Returns
int

getPadding

boolean getPadding (Rect padding)

Parameters
padding Rect

Returns
boolean

getState

int[] getState ()

Returns
int[]

getTransparentRegion

Region getTransparentRegion ()

Returns
Region

inflate

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

Parameters
res Resources

parser XmlPullParser

attrs AttributeSet

theme Resources.Theme

Throws
XmlPullParserException
IOException

inflate

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

Parameters
res Resources

parser XmlPullParser

attrs AttributeSet

Throws
XmlPullParserException
IOException

invalidateSelf

void invalidateSelf ()

isAutoMirrored

boolean isAutoMirrored ()

Returns
boolean

isStateful

boolean isStateful ()

Returns
boolean

jumpToCurrentState

void jumpToCurrentState ()

mutate

Drawable mutate ()

Returns
Drawable

scheduleSelf

void scheduleSelf (Runnable what, 
                long when)

Parameters
what Runnable

when long

setAlpha

added in version 24.1.0
void setAlpha (int alpha)

Parameters
alpha int

setAutoMirrored

void setAutoMirrored (boolean mirrored)

Parameters
mirrored boolean

setChangingConfigurations

void setChangingConfigurations (int configs)

Parameters
configs int

setColorFilter

added in version 24.1.0
void setColorFilter (ColorFilter colorFilter)

Parameters
colorFilter ColorFilter

setColorFilter

void setColorFilter (int color, 
                PorterDuff.Mode mode)

Parameters
color int

mode PorterDuff.Mode

setFilterBitmap

void setFilterBitmap (boolean filter)

Parameters
filter boolean

setHotspot

void setHotspot (float x, 
                float y)

Parameters
x float

y float

setHotspotBounds

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

Parameters
left int

top int

right int

bottom int

setState

boolean setState (int[] stateSet)

Parameters
stateSet int

Returns
boolean

setTint

void setTint (int tint)

Parameters
tint int

setTintList

void setTintList (ColorStateList tint)

Parameters
tint ColorStateList

setTintMode

void setTintMode (PorterDuff.Mode tintMode)

Parameters
tintMode PorterDuff.Mode

setVisible

boolean setVisible (boolean visible, 
                boolean restart)

Parameters
visible boolean

restart boolean

Returns
boolean

unscheduleSelf

void unscheduleSelf (Runnable what)

Parameters
what Runnable

Protected methods

onBoundsChange

void onBoundsChange (Rect bounds)

Parameters
bounds Rect

onLevelChange

boolean onLevelChange (int level)

Parameters
level int

Returns
boolean

onStateChange

boolean onStateChange (int[] stateSet)

Parameters
stateSet int

Returns
boolean

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.
(Sep 2017 survey)