Как показать GIF внутри диалога с помощью glide lib - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь показать GIF внутри диалогового окна загрузки в моем приложении, я использую библиотеку glide image, так как она поддерживает GIFS. Когда я пытаюсь показать GIF в диалоговом окне, он не представляет GIF, а показывает только фон диалога. Я искал вокруг, но я не нашел хорошего решения.

Мой код диалога ниже

class ShowProgress(context: Context) : Dialog(context) {

var dialog: Dialog? = null
var imageView: ImageView? = null

init {
    dialog = Dialog(context)
    imageView = findViewById(R.id.glideImage)
}

fun showDialog(context: Context) {
    val dialogView = LayoutInflater.from(context).inflate(R.layout.progress_layout, null, false)
    imageView?.let { Glide.with(context).asGif().placeholder(R.drawable.redbull).into(it) }
    dialog?.setCancelable(false)
    dialog?.setContentView(dialogView)
    dialog?.show()

}

1 Ответ

0 голосов
/ 30 октября 2019

Кто-то может исправить меня, если я ошибаюсь, но из коробки ImageView не поддерживает формат Gif.

Вам нужно посмотреть на альтернативные форматы, например, разместить его в WebView илииспользуя такую ​​библиотеку: https://github.com/koral--/android-gif-drawable

С 2013 года ImageView не поддерживает GIF: https://stackoverflow.com/a/16486771/413127

Android P способ сделать GIF: https://medium.com/appnroll-publication/what-is-new-in-android-p-imagedecoder-animatedimagedrawable-a65744bec7c1


Я исправлю себя (да, это не поддерживается, НО):

Похоже, Glide сам делает немного магии для создания Gif Drawable, см. Здесь: https://stackoverflow.com/a/34870817/413127

Так что для вашего примера:

    GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
    imageView?.let { Glide.with(context).asGif().placeholder(R.drawable.redbull).into(imageViewTarget) }
...