Работа с Gif-файлами в проекте Android
С бэка получаем зашированную строку Base64 (до кодирования это gif картинка), которую нужно декодировать и сохранить в кэш приложения (кэшируется с помощью Glide). Позже требуется взять этот файл из кэша (файл хранится в кэше без расширения) в Gif-расширении и показать пользователю.
Проблема в том, что взятый с кэша представляется пользователю в виде обычной картинки(только первый фрейм), а не в Gif.
Как отображать пользователю именно Gif-картинку в описанных условиях?
Ответы (1 шт):
Библиотека Glide поддерживает формат GIF.
Допустим, у нас есть ImageView:
<ImageView
android:id="@+id/my_image_view"
android:layout_width="100dp"
android:layout_height="100dp" />
Загружаем GIF из ресурсов в эту ImageView и все начинает анимироваться:
Glide.with(this)
.load(R.drawable.my_gif_image)
.into(myImageView)
Если вам нужно управлять количеством циклов GIF-анимации, то можно создать такой класс:
class GifViewTarget(
private val imageView: ImageView,
private val loopCount: Int
) : ImageViewTarget<Drawable>(imageView) {
override fun setResource(resource: Drawable?) {
if (resource is GifDrawable) {
resource.setLoopCount(loopCount)
}
imageView.setImageDrawable(resource)
}
}
Тогда GIF можно загрузить так:
Glide.with(this)
.load(R.drawable.my_gif_image)
.into(GifViewTarget(myImageView, loopCount = 3))