Только для Android API (Android Pie) 28 и +
используйте
AnimatedImageDrawable как
// ImageView from layout
val ima : ImageView = findViewById(R.id.img_gif)
// create AnimatedDrawable
val decodedAnimation = ImageDecoder.decodeDrawable(
// create ImageDecoder.Source object
ImageDecoder.createSource(resources, R.drawable.tenor))
// set the drawble as image source of ImageView
ima.setImageDrawable(decodedAnimation)
// play the animation
(decodedAnimation as? AnimatedImageDrawable)?.start()
XML-код, добавьте ImageView
<ImageView
android:id="@+id/img_gif"
android:background="@drawable/ic_launcher_background" <!--Default background-->
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_width="200dp"
android:layout_height="200dp" />
AnimatedImageDrawable
является потомком Drawable и создан ImageDecoder.decodeDrawable
ImageDecoder.decodeDrawable
, что дополнительно потребовало экземпляра ImageDecoder.Source
, созданного ImageDecoder.createSource
.
ImageDecoder.createSource
может принимать источник только как имя, ByteBuffer, File, resourceId, URI, ContentResolver для создания исходного объекта и использует его для создания AnimatedImageDrawable
как Drawable
(полиморфный вызов)
static ImageDecoder.Source createSource(AssetManager assets, String fileName)
static ImageDecoder.Source createSource(ByteBuffer buffer)
static ImageDecoder.Source createSource(File file)
static ImageDecoder.Source createSource(Resources res, int resId)
static ImageDecoder.Source createSource(ContentResolver cr, Uri uri)
Примечание: Вы можететакже создайте Bitmap
, используя ImageDecoder # decodeBitmap .
Вывод:
AnimatedDrawable также поддерживает изменение размера, управление кадрами и цветом