Glide - загрузить GIF как заполнитель - PullRequest
0 голосов
/ 24 декабря 2018

Я использую Glide в своем проекте Android, и у меня есть RecyclerView со списком CardView s.Я хочу загрузить изображение для каждого CardView, показывая GIF изображение загрузки, пока не загрузится реальное изображение.Теперь, если он попытается загрузить GIF в качестве основного изображения, нет проблем:

Glide.with(context)
        .load(R.raw.gif_loading_bar)
        .into(imageView);

Приведенный выше код работает нормально, и GIF загружается.Но когда я пытаюсь загрузить другое изображение и сделать GIF заполнителем Android Studio показывает ошибку «Ожидаемый ресурс типа drawable» :

Glide.with(mContext)
        .setDefaultRequestOptions(new RequestOptions()
                .placeholder(R.raw.gif_loading_bar))
        .load(imageUrl)
        .into(imageView);

Что мне делать, чтобыисправить это?

Ответы [ 3 ]

0 голосов
/ 25 декабря 2018

К сожалению, Glide не поддерживает GIF заполнителей, как упомянуто в этой проблеме Github , и этой .

0 голосов
/ 18 марта 2019

Glide поддерживает GIF в качестве заполнителя.Я недавно столкнулся с этой ситуацией и решил ее, как показано ниже.Надеюсь, что это поможет кому-то вроде меня, кто сталкивается с этой ситуацией.

    var builder = Glide.with(mContext).load(path).apply(options).thumbnail(Glide.with(mContext).load(R.raw.loader2))
if (listener == null) {
    builder = builder.addListener(object : RequestListener<Drawable> {
        override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {

            //TODO; your code here
            return false
        }

        override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
            //TODO; your code here
            return false
        }
    })
} else {
    builder = builder.addListener(listener)
}
builder.into(myImageView)

Что он делает

Он загружает ваш GIF в качестве эскиза, пока изображение не будет загружено из источника,Внутри метода onResourceReady он даст вам обратный вызов, когда ресурс будет готов.Обязательно поместите файл gif в пакет R.raw , а не в пакет для рисования.Дайте мне знать, если у вас возникнут какие-либо проблемы.

0 голосов
/ 24 декабря 2018

Это должно сделать работу:

ImageView imageView = (ImageView) findViewById(R.id.imageView);
GlideDrawableImageViewTarget imageViewTarget = new 
GlideDrawableImageViewTarget(imageView);

Glide.with(context)
    .asGif()
    .setDefaultRequestOptions(new RequestOptions()
            .placeholder(R.raw.gif_loading_bar))
    .load(imageUrl)
    .into(imageView);

Подробнее здесь и здесь

...