AnimatedImageDrawable
open class AnimatedImageDrawable : Drawable, Animatable2
kotlin.Any | ||
↳ | android.graphics.drawable.Drawable | |
↳ | android.graphics.drawable.AnimatedImageDrawable |
Drawable
for drawing animated images (like GIF).
The framework handles decoding subsequent frames in another thread and updating when necessary. The drawable will only animate while it is being displayed.
Created by android.graphics.ImageDecoder#decodeDrawable. A user needs to call start
to start the animation.
It can also be defined in XML using the <animated-image>
element.
Summary
XML attributes | |
---|---|
android:autoMirrored |
Indicates if the drawable needs to be mirrored when its layout direction is RTL (right-to-left). |
android:autoStart |
When true, automatically start animating. |
android:repeatCount |
Replace the loop count in the encoded data. |
android:src |
Identifier of the image file. |
Constants | |
---|---|
static Int |
Pass this to |
Public constructors | |
---|---|
Create an empty AnimatedImageDrawable. |
Public methods | |
---|---|
open Unit | |
open Unit |
Draw in its bounds (set via setBounds) respecting optional effects such as alpha (set via setAlpha) and color filter (set via setColorFilter). |
open Int |
getAlpha() |
open ColorFilter? |
Returns the current color filter, or |
open Int | |
open Int | |
open Int |
Return the opacity/transparency of this Drawable. |
open Int |
Retrieve the number of times the animation will repeat. |
open Unit |
inflate(r: Resources, parser: XmlPullParser, attrs: AttributeSet, theme: Resources.Theme?) |
Boolean | |
open Boolean |
Return whether the animation is currently running. |
open Boolean |
onLayoutDirectionChanged(layoutDirection: Int) |
open Unit |
Adds a callback to listen to the animation events. |
open Unit |
Specify an alpha value for the drawable. |
open Unit |
setAutoMirrored(mirrored: Boolean) |
open Unit |
setColorFilter(colorFilter: ColorFilter?) Specify an optional color filter for the drawable. |
open Unit |
setRepeatCount(repeatCount: Int) Specify the number of times to repeat the animation. |
open Unit |
start() Start the animation. |
open Unit |
stop() Stop the animation. |
open Boolean |
Removes the specified animation callback. |
Protected methods | |
---|---|
open Unit |
onBoundsChange(bounds: Rect) |
Inherited functions | |
---|---|
XML attributes
android:autoMirrored
android:autoMirrored
Indicates if the drawable needs to be mirrored when its layout direction is RTL (right-to-left).
May be a boolean value, such as "true
" or "false
".
android:autoStart
android:autoStart
When true, automatically start animating. The default is false, meaning that the animation will not start until start() is called.
May be a boolean value, such as "true
" or "false
".
android:repeatCount
android:repeatCount
Replace the loop count in the encoded data. A repeat count of 0 means that the animation will play once, regardless of the number of times specified in the encoded data. Setting this to infinite (-1) will result in the animation repeating as long as it is displayed (once start() is called).
May be an integer value, such as "100
".
Must be one of the following constant values.
Constant | Value | Description |
---|---|---|
infinite | ffffffff |
android:src
android:src
Identifier of the image file. This attribute is mandatory. It must be an image file with multiple frames, e.g. gif or webp
May be a reference to another resource, in the form "@[+][package:]type/name
" or a theme attribute in the form "?[package:]type/name
".
May be a color value, in the form of "rgb
", "argb
", "rrggbb
", or "aarrggbb
".
Constants
REPEAT_INFINITE
static val REPEAT_INFINITE: Int
Pass this to setRepeatCount
to repeat infinitely.
Animatable2.AnimationCallback#onAnimationEnd
will never be called unless there is an error.
Value: -1
Public constructors
AnimatedImageDrawable
AnimatedImageDrawable()
Create an empty AnimatedImageDrawable.
Public methods
draw
open fun draw(canvas: Canvas): Unit
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: This value cannot be null . |
getAlpha
open fun getAlpha(): Int
Return | |
---|---|
Int |
Value is between 0 and 255 inclusive |
getColorFilter
open fun getColorFilter(): ColorFilter?
Returns the current color filter, or null
if none set.
Return | |
---|---|
ColorFilter? |
This value may be null . |
getIntrinsicHeight
open fun getIntrinsicHeight(): Int
Return | |
---|---|
Int |
the intrinsic height, or -1 if no intrinsic height |
getIntrinsicWidth
open fun getIntrinsicWidth(): Int
Return | |
---|---|
Int |
the intrinsic width, or -1 if no intrinsic width |
getOpacity
open fun getOpacity(): Int
Return the opacity/transparency of this Drawable. The returned value is one of the abstract format constants in android.graphics.PixelFormat
: android.graphics.PixelFormat#UNKNOWN
, android.graphics.PixelFormat#TRANSLUCENT
, android.graphics.PixelFormat#TRANSPARENT
, or android.graphics.PixelFormat#OPAQUE
.
An OPAQUE drawable is one that draws all all content within its bounds, completely covering anything behind the drawable. A TRANSPARENT drawable is one that draws nothing within its bounds, allowing everything behind it to show through. A TRANSLUCENT drawable is a drawable in any other state, where the drawable will draw some, but not all, of the content within its bounds and at least some content behind the drawable will be visible. If the visibility of the drawable's contents cannot be determined, the safest/best return value is TRANSLUCENT.
Generally a Drawable should be as conservative as possible with the value it returns. For example, if it contains multiple child drawables and only shows one of them at a time, if only one of the children is TRANSLUCENT and the others are OPAQUE then TRANSLUCENT should be returned. You can use the method resolveOpacity
to perform a standard reduction of two opacities to the appropriate single output.
Note that the returned value does not necessarily take into account a custom alpha or color filter that has been applied by the client through the setAlpha
or #setColorFilter methods. Some subclasses, such as BitmapDrawable
, ColorDrawable
, and GradientDrawable
, do account for the value of setAlpha
, but the general behavior is dependent upon the implementation of the subclass.
Return | |
---|---|
Int |
Value is android.graphics.PixelFormat#UNKNOWN , android.graphics.PixelFormat#TRANSLUCENT , android.graphics.PixelFormat#TRANSPARENT , or android.graphics.PixelFormat#OPAQUE |
getRepeatCount
open fun getRepeatCount(): Int
Retrieve the number of times the animation will repeat.
By default, the repeat count in the encoded data is respected. If the value is REPEAT_INFINITE
, the animation will repeat as long as it is displayed. If the value is 0
, it will play once.
Calling setRepeatCount
will make future calls to this method return the value passed to setRepeatCount
.
inflate
open fun inflate(
r: Resources,
parser: XmlPullParser,
attrs: AttributeSet,
theme: Resources.Theme?
): Unit
Parameters | |
---|---|
r |
Resources: Resources used to resolve attribute values This value cannot be null . |
parser |
XmlPullParser: XML parser from which to inflate this Drawable This value cannot be null . |
attrs |
AttributeSet: Base set of attribute values This value cannot be null . |
theme |
Resources.Theme?: Theme to apply, may be null |
Exceptions | |
---|---|
org.xmlpull.v1.XmlPullParserException |
|
java.io.IOException |
isAutoMirrored
fun isAutoMirrored(): Boolean
Return | |
---|---|
Boolean |
boolean Returns true if this Drawable will be automatically mirrored. |
isRunning
open fun isRunning(): Boolean
Return whether the animation is currently running.
When this drawable is created, this will return false
. A client needs to call start
to start the animation.
Return | |
---|---|
Boolean |
True if the animation is running, false otherwise. |
onLayoutDirectionChanged
open fun onLayoutDirectionChanged(layoutDirection: Int): Boolean
Parameters | |
---|---|
layoutDirection |
Int: the new resolved layout direction Value is android.view.View#LAYOUT_DIRECTION_LTR , or android.view.View#LAYOUT_DIRECTION_RTL |
Return | |
---|---|
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 |
registerAnimationCallback
open fun registerAnimationCallback(callback: Animatable2.AnimationCallback): Unit
Adds a callback to listen to the animation events.
Parameters | |
---|---|
callback |
Animatable2.AnimationCallback: This value cannot be null . |
setAlpha
open fun setAlpha(alpha: Int): Unit
Specify an alpha value for the drawable. 0 means fully transparent, and 255 means fully opaque.
Parameters | |
---|---|
alpha |
Int: Value is between 0 and 255 inclusive |
setAutoMirrored
open fun setAutoMirrored(mirrored: Boolean): Unit
Parameters | |
---|---|
mirrored |
Boolean: Set to true if the Drawable should be mirrored, false if not. |
setColorFilter
open fun setColorFilter(colorFilter: ColorFilter?): Unit
Specify an optional color filter for the drawable.
If a Drawable has a ColorFilter, each output pixel of the Drawable's drawing contents will be modified by the color filter before it is blended onto the render target of a Canvas.
Pass null
to remove any existing color filter.
Note: Setting a non-null
color filter disables tint
.
Parameters | |
---|---|
colorFilter |
ColorFilter?: This value may be null . |
setRepeatCount
open fun setRepeatCount(repeatCount: Int): Unit
Specify the number of times to repeat the animation.
By default, the repeat count in the encoded data is respected. If set to REPEAT_INFINITE
, the animation will repeat as long as it is displayed. If the value is 0
, the animation will play once.
This call replaces the current repeat count. If the encoded data specified a repeat count of 2
(meaning that getRepeatCount()
returns 2
, the animation will play three times. Calling setRepeatCount(1)
will result in playing only twice and getRepeatCount()
returning 1
.
If the animation is already playing, the iterations that have already occurred count towards the new count. If the animation has already repeated the appropriate number of times (or more), it will finish its current iteration and then stop.
Parameters | |
---|---|
repeatCount |
Int: Value is REPEAT_INFINITE or greater |
start
open fun start(): Unit
Start the animation.
Does nothing if the animation is already running. If the animation is stopped, this will reset it.
When the drawable is drawn, starting the animation, Animatable2.AnimationCallback#onAnimationStart
will be called.
stop
open fun stop(): Unit
Stop the animation.
If the animation is stopped, it will continue to display the frame it was displaying when stopped.
unregisterAnimationCallback
open fun unregisterAnimationCallback(callback: Animatable2.AnimationCallback): Boolean
Removes the specified animation callback.
Parameters | |
---|---|
callback |
Animatable2.AnimationCallback: This value cannot be null . |
Return | |
---|---|
Boolean |
false if callback didn't exist in the call back list, or true if callback has been removed successfully. |
Protected methods
onBoundsChange
protected open fun onBoundsChange(bounds: Rect): Unit
Parameters | |
---|---|
bounds |
Rect: This value cannot be null . |