AnimatedVectorDrawableCompat
public
class
AnimatedVectorDrawableCompat
extends Drawable
implements
Animatable2Compat
For API 24 and above, this class is delegating to the framework's AnimatedVectorDrawable
.
For older API version, this class uses ObjectAnimator
and
AnimatorSet
to animate the properties of a
VectorDrawableCompat
to create an animated drawable.
AnimatedVectorDrawableCompat are defined in the same XML format as
AnimatedVectorDrawable
.
Here are all the animatable attributes in
VectorDrawableCompat
:
Element Name |
Animatable attribute name |
<vector> |
alpha |
<group> |
rotation |
pivotX |
pivotY |
scaleX |
scaleY |
translateX |
translateY |
<path> |
fillColor |
pathData |
strokeColor |
strokeWidth |
strokeAlpha |
fillAlpha |
trimPathStart |
trimPathEnd |
trimPathOffset |
You can always create a AnimatedVectorDrawableCompat object and use it as a Drawable by the Java
API. In order to refer to AnimatedVectorDrawableCompat inside a XML file, you can use
app:srcCompat attribute in AppCompat library's ImageButton or ImageView.
Note that the animation in AnimatedVectorDrawableCompat now can support the following features:
- Path Morphing (PathType evaluator). This is used for morphing one path into another.
- Path Interpolation. This is used to defined a flexible interpolator (represented as a path)
instead of the system defined ones like LinearInterpolator.
- Animating 2 values in one ObjectAnimator according to one path's X value and Y value. One
usage is moving one object in both X and Y dimensions along an path.
Summary
Public methods |
void
|
applyTheme(Resources.Theme t)
|
boolean
|
canApplyTheme()
|
void
|
clearAnimationCallbacks()
Removes all existing animation callbacks.
|
static
void
|
clearAnimationCallbacks(Drawable dr)
Utility function to clear animation callbacks from Drawable, when the drawable is
created from XML and referred in Java code, e.g: ImageView.getDrawable().
|
void
|
clearColorFilter()
|
static
AnimatedVectorDrawableCompat
|
create(Context context, int resId)
Create a AnimatedVectorDrawableCompat object.
|
static
AnimatedVectorDrawableCompat
|
createFromXmlInner(Context context, Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)
Create a AnimatedVectorDrawableCompat from inside an XML document using an optional
Resources.Theme .
|
void
|
draw(Canvas canvas)
|
int
|
getAlpha()
|
int
|
getChangingConfigurations()
|
ColorFilter
|
getColorFilter()
|
Drawable.ConstantState
|
getConstantState()
Note that we don't support constant state when SDK < 24.
|
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)
|
boolean
|
isAutoMirrored()
|
boolean
|
isRunning()
|
boolean
|
isStateful()
|
void
|
jumpToCurrentState()
|
Drawable
|
mutate()
mutate() will be effective only if the getConstantState() is returning non-null.
|
static
void
|
registerAnimationCallback(Drawable dr, Animatable2Compat.AnimationCallback callback)
Utility function to register callback to Drawable, when the drawable is created from XML and
referred in Java code, e.g: ImageView.getDrawable().
|
void
|
registerAnimationCallback(Animatable2Compat.AnimationCallback callback)
Adds a callback to listen to the animation events.
|
void
|
setAlpha(int alpha)
|
void
|
setAutoMirrored(boolean mirrored)
|
void
|
setChangingConfigurations(int configs)
|
void
|
setColorFilter(int color, PorterDuff.Mode mode)
|
void
|
setColorFilter(ColorFilter colorFilter)
|
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
|
start()
|
void
|
stop()
|
boolean
|
unregisterAnimationCallback(Animatable2Compat.AnimationCallback callback)
Removes the specified animation callback.
|
static
boolean
|
unregisterAnimationCallback(Drawable dr, Animatable2Compat.AnimationCallback callback)
Utility function to unregister animation callback from Drawable, when the drawable is
created from XML and referred in Java code, e.g: ImageView.getDrawable().
|
Inherited methods |
From
class
android.graphics.drawable.Drawable
void
|
applyTheme(Resources.Theme arg0)
|
boolean
|
canApplyTheme()
|
void
|
clearColorFilter()
|
final
Rect
|
copyBounds()
|
final
void
|
copyBounds(Rect arg0)
|
static
Drawable
|
createFromPath(String arg0)
|
static
Drawable
|
createFromResourceStream(Resources arg0, TypedValue arg1, InputStream arg2, String arg3, BitmapFactory.Options arg4)
|
static
Drawable
|
createFromResourceStream(Resources arg0, TypedValue arg1, InputStream arg2, String arg3)
|
static
Drawable
|
createFromStream(InputStream arg0, String arg1)
|
static
Drawable
|
createFromXml(Resources arg0, XmlPullParser arg1)
|
static
Drawable
|
createFromXml(Resources arg0, XmlPullParser arg1, Resources.Theme arg2)
|
static
Drawable
|
createFromXmlInner(Resources arg0, XmlPullParser arg1, AttributeSet arg2, Resources.Theme arg3)
|
static
Drawable
|
createFromXmlInner(Resources arg0, XmlPullParser arg1, AttributeSet arg2)
|
abstract
void
|
draw(Canvas arg0)
|
int
|
getAlpha()
|
final
Rect
|
getBounds()
|
Drawable.Callback
|
getCallback()
|
int
|
getChangingConfigurations()
|
ColorFilter
|
getColorFilter()
|
Drawable.ConstantState
|
getConstantState()
|
Drawable
|
getCurrent()
|
Rect
|
getDirtyBounds()
|
void
|
getHotspotBounds(Rect arg0)
|
int
|
getIntrinsicHeight()
|
int
|
getIntrinsicWidth()
|
int
|
getLayoutDirection()
|
final
int
|
getLevel()
|
int
|
getMinimumHeight()
|
int
|
getMinimumWidth()
|
abstract
int
|
getOpacity()
|
void
|
getOutline(Outline arg0)
|
boolean
|
getPadding(Rect arg0)
|
int[]
|
getState()
|
Region
|
getTransparentRegion()
|
void
|
inflate(Resources arg0, XmlPullParser arg1, AttributeSet arg2, Resources.Theme arg3)
|
void
|
inflate(Resources arg0, XmlPullParser arg1, AttributeSet arg2)
|
void
|
invalidateSelf()
|
boolean
|
isAutoMirrored()
|
boolean
|
isFilterBitmap()
|
boolean
|
isStateful()
|
final
boolean
|
isVisible()
|
void
|
jumpToCurrentState()
|
Drawable
|
mutate()
|
void
|
onBoundsChange(Rect arg0)
|
boolean
|
onLayoutDirectionChanged(int arg0)
|
boolean
|
onLevelChange(int arg0)
|
boolean
|
onStateChange(int[] arg0)
|
static
int
|
resolveOpacity(int arg0, int arg1)
|
void
|
scheduleSelf(Runnable arg0, long arg1)
|
abstract
void
|
setAlpha(int arg0)
|
void
|
setAutoMirrored(boolean arg0)
|
void
|
setBounds(int arg0, int arg1, int arg2, int arg3)
|
void
|
setBounds(Rect arg0)
|
final
void
|
setCallback(Drawable.Callback arg0)
|
void
|
setChangingConfigurations(int arg0)
|
void
|
setColorFilter(int arg0, PorterDuff.Mode arg1)
|
abstract
void
|
setColorFilter(ColorFilter arg0)
|
void
|
setDither(boolean arg0)
|
void
|
setFilterBitmap(boolean arg0)
|
void
|
setHotspot(float arg0, float arg1)
|
void
|
setHotspotBounds(int arg0, int arg1, int arg2, int arg3)
|
final
boolean
|
setLayoutDirection(int arg0)
|
final
boolean
|
setLevel(int arg0)
|
boolean
|
setState(int[] arg0)
|
void
|
setTint(int arg0)
|
void
|
setTintList(ColorStateList arg0)
|
void
|
setTintMode(PorterDuff.Mode arg0)
|
boolean
|
setVisible(boolean arg0, boolean arg1)
|
void
|
unscheduleSelf(Runnable arg0)
|
|
From
class
java.lang.Object
Object
|
clone()
|
boolean
|
equals(Object arg0)
|
void
|
finalize()
|
final
Class<?>
|
getClass()
|
int
|
hashCode()
|
final
void
|
notify()
|
final
void
|
notifyAll()
|
String
|
toString()
|
final
void
|
wait(long arg0, int arg1)
|
final
void
|
wait(long arg0)
|
final
void
|
wait()
|
|
From
interface
android.support.graphics.drawable.Animatable2Compat
|
From
interface
android.graphics.drawable.Animatable
abstract
boolean
|
isRunning()
|
abstract
void
|
start()
|
abstract
void
|
stop()
|
|
Public methods
applyTheme
void applyTheme (Resources.Theme t)
Parameters |
t |
Resources.Theme |
canApplyTheme
boolean canApplyTheme ()
clearAnimationCallbacks
void clearAnimationCallbacks ()
Removes all existing animation callbacks.
clearAnimationCallbacks
void clearAnimationCallbacks (Drawable dr)
Utility function to clear animation callbacks from Drawable, when the drawable is
created from XML and referred in Java code, e.g: ImageView.getDrawable().
From API 24 on, the drawable is treated as an AnimatedVectorDrawable.
Otherwise, it is treated as AnimatedVectorDrawableCompat.
clearColorFilter
void clearColorFilter ()
create
AnimatedVectorDrawableCompat create (Context context,
int resId)
Create a AnimatedVectorDrawableCompat object.
Parameters |
context |
Context : the context for creating the animators. |
resId |
int : the resource ID for AnimatedVectorDrawableCompat object. |
createFromXmlInner
AnimatedVectorDrawableCompat createFromXmlInner (Context context,
Resources r,
XmlPullParser parser,
AttributeSet attrs,
Resources.Theme theme)
Create a AnimatedVectorDrawableCompat 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 |
context |
Context |
r |
Resources |
parser |
XmlPullParser |
attrs |
AttributeSet |
theme |
Resources.Theme |
Throws |
XmlPullParserException |
|
IOException |
|
draw
void draw (Canvas canvas)
getChangingConfigurations
int getChangingConfigurations ()
getConstantState
Drawable.ConstantState getConstantState ()
Note that we don't support constant state when SDK < 24.
Make sure you check the return value before using it.
getIntrinsicHeight
int getIntrinsicHeight ()
getIntrinsicWidth
int getIntrinsicWidth ()
getMinimumHeight
int getMinimumHeight ()
getMinimumWidth
int getMinimumWidth ()
getOpacity
int getOpacity ()
getPadding
boolean getPadding (Rect padding)
getState
int[] getState ()
getTransparentRegion
Region getTransparentRegion ()
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 |
|
isAutoMirrored
boolean isAutoMirrored ()
isRunning
boolean isRunning ()
isStateful
boolean isStateful ()
jumpToCurrentState
void jumpToCurrentState ()
mutate
Drawable mutate ()
mutate() will be effective only if the getConstantState() is returning non-null.
Otherwise, it just return the current object without modification.
registerAnimationCallback
void registerAnimationCallback (Drawable dr,
Animatable2Compat.AnimationCallback callback)
Utility function to register callback to Drawable, when the drawable is created from XML and
referred in Java code, e.g: ImageView.getDrawable().
From API 24 on, the drawable is treated as an AnimatedVectorDrawable.
Otherwise, it is treated as AnimatedVectorDrawableCompat.
Parameters |
dr |
Drawable |
callback |
Animatable2Compat.AnimationCallback |
registerAnimationCallback
void registerAnimationCallback (Animatable2Compat.AnimationCallback callback)
Adds a callback to listen to the animation events.
Parameters |
callback |
Animatable2Compat.AnimationCallback : Callback to add.
|
setAlpha
void setAlpha (int alpha)
setAutoMirrored
void setAutoMirrored (boolean mirrored)
Parameters |
mirrored |
boolean |
setChangingConfigurations
void setChangingConfigurations (int configs)
setColorFilter
void setColorFilter (int color,
PorterDuff.Mode mode)
Parameters |
color |
int |
mode |
PorterDuff.Mode |
setColorFilter
void setColorFilter (ColorFilter colorFilter)
Parameters |
colorFilter |
ColorFilter |
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)
setTint
void setTint (int tint)
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 |
unregisterAnimationCallback
boolean unregisterAnimationCallback (Animatable2Compat.AnimationCallback callback)
Removes the specified animation callback.
Parameters |
callback |
Animatable2Compat.AnimationCallback : Callback to remove. |
Returns |
boolean |
false if callback didn't exist in the call back list, or true if
callback has been removed successfully.
|
unregisterAnimationCallback
boolean unregisterAnimationCallback (Drawable dr,
Animatable2Compat.AnimationCallback callback)
Utility function to unregister animation callback from Drawable, when the drawable is
created from XML and referred in Java code, e.g: ImageView.getDrawable().
From API 24 on, the drawable is treated as an AnimatedVectorDrawable.
Otherwise, it is treated as AnimatedVectorDrawableCompat.
Parameters |
dr |
Drawable |
callback |
Animatable2Compat.AnimationCallback |
Protected methods
onBoundsChange
void onBoundsChange (Rect bounds)
onLevelChange
boolean onLevelChange (int level)
onStateChange
boolean onStateChange (int[] state)