Показать GIF-файл с помощью Glide (библиотека загрузки изображений и кеширования)

Я пытаюсь показать изображение GIF как загрузку заполнителя в представлении изображения – с помощью библиотеки Glide :

Glide.with(context) .load(ImageUrl()) .placeholder(R.drawable.loading2) .asGif() .crossFade() .into(image); 

Я пытаюсь показать этот файл

loading2.gif

Но получите эту ошибку:

Ошибка: (54, 86) ошибка: не удается найти метод символов asGif ()

Как показать GIF-файл с помощью Glide в imageView?

Solutions Collecting From Web of "Показать GIF-файл с помощью Glide (библиотека загрузки изображений и кеширования)"

Вышеприведенный ответ не помог мне. Ниже приведен код.

 ImageView imageView = (ImageView) findViewById(R.id.imageView); GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView); Glide.with(this).load(R.raw.sample_gif).into(imageViewTarget); 

Для Glide 3.0 вам нужно установить asGif () раньше:

 Glide.with(context) .load(imageUrl) .asGif() .placeholder(R.drawable.loading2) .crossFade() .into(imageView); 

Имейте в виду, что просто использование load() будет загружать GIF или Bitmap в зависимости от типа данных. Если вы не хотите, чтобы ваш груз вышел из строя, если данный URL не является gif, вам не нужно указывать asGif()

С Glide 4.0.0-RC0

 ImageView imageView = (ImageView) findViewById(R.id.imageView); Glide.with(this).load(R.raw.image_gif).asGif().into(imageView); 

Попробуй это. Он работал для меня и будет работать и для вашего кода. Он работает как для изображений, так и для gif.

 ImageView imageView = (ImageView) findViewById(R.id.test_image); GlideDrawableImageViewTarget imagePreview = new GlideDrawableImageViewTarget(imageView); Glide .with(this) .load(url) .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { return false; } }) .into(imagePreview); } 

Это решение – вроде работа

 <RelativeLayout android:layout_width="wrap_content" android:id="@+id/ImageContainer" android:background="#fff" android:layout_height="wrap_content"> <ImageView android:layout_width="wrap_content" android:id="@+id/loadingImageView" android:layout_centerInParent="true" android:layout_height="wrap_content"/> <ImageView android:id="@+id/mainImageView" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:layout_centerInParent="true" /> </RelativeLayout> 
  1. Вместо использования одного используйте 2 ImageViews

  2. Загрузите gif в первый ImageView, используя решение, данное @Preetam

    ImageView loadingImageView = (ImageView) findViewById(R.id.loadingImageView); GlideDrawableImageViewTarget loadingImageViewTarget = new GlideDrawableImageViewTarget(loadingImageView); Glide.with(this).load(R.raw.spinner).into(loadingImageViewTarget);

  3. Загрузите изображение из сети во втором ImageView (заказ важен, если вы не хотите скрывать загрузку gif после загрузки изображения из сети)

    ImageView mainImageView = (ImageView) findViewById(R.id.mainImageView ); GlideDrawableImageViewTarget mainImageViewTarget = new GlideDrawableImageViewTarget(mainImageView); Glide.with(this).load(imageUrl).into(mainImageViewTarget);

У меня была такая же проблема. Вы можете решить эту проблему, переместившись туда, где находится asGif() . Он должен появиться непосредственно перед .load() .

Итак, измените:

 Glide.with(context) .load(ImageUrl()) .placeholder(R.drawable.loading2) .asGif() .... 

в

 Glide.with(context) .asGif() .load(ImageUrl()) .placeholder(R.drawable.loading2) .... 

Вот лучший способ

  Glide.with(a).load(item[position]) .thumbnail(Glide.with(a).load(R.drawable.preloader)) .fitCenter() .crossFade() .into(imageView); 
 Glide.with(this) .load(R.drawable.logo) .asGif() .placeholder(R.drawable.logo) .into(imageView);