Я пытаюсь показать изображение GIF как загрузку заполнителя в представлении изображения – с помощью библиотеки Glide :
Glide.with(context) .load(ImageUrl()) .placeholder(R.drawable.loading2) .asGif() .crossFade() .into(image);
Я пытаюсь показать этот файл
loading2.gif
Но получите эту ошибку:
Ошибка: (54, 86) ошибка: не удается найти метод символов asGif ()
Как показать GIF-файл с помощью Glide в imageView?
Вышеприведенный ответ не помог мне. Ниже приведен код.
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>
Вместо использования одного используйте 2 ImageViews
Загрузите gif в первый ImageView, используя решение, данное @Preetam
ImageView loadingImageView = (ImageView) findViewById(R.id.loadingImageView); GlideDrawableImageViewTarget loadingImageViewTarget = new GlideDrawableImageViewTarget(loadingImageView); Glide.with(this).load(R.raw.spinner).into(loadingImageViewTarget);
Загрузите изображение из сети во втором 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);