J'essaie de montrer une image GIF comme espace réservé au chargement dans la vue image - avec Glide Library :
Glide.with(context)
.load(ImageUrl())
.placeholder(R.drawable.loading2)
.asGif()
.crossFade()
.into(image);
J'essaie de montrer ce fichier
chargement2.gif
mais obtenez cette erreur:
Erreur: (54, 86) erreur: impossible de trouver la méthode de symbole asGif ()
Comment afficher un fichier GIF avec Glide dans une imageView?
La réponse ci-dessus n'a pas fonctionné pour moi. Le code ci-dessous fonctionne.
ImageView imageView = (ImageView) findViewById(R.id.imageView);
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
Glide.with(this).load(R.raw.sample_gif).into(imageViewTarget);
Pour Glide 3.0, vous devez définir asGif () plus tôt:
Glide.with(context)
.load(imageUrl)
.asGif()
.placeholder(R.drawable.loading2)
.crossFade()
.into(imageView);
Gardez à l'esprit que le fait d'utiliser load()
chargera un fichier GIF ou Bitmap en fonction du type de données. Sauf si vous voulez que votre charge échoue si l'URL donnée n'est pas un gif, vous n'avez pas besoin de spécifier asGif()
.
Pour Glide 4. +
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Glide.with(this).asGif().load(R.raw.image_gif).into(imageView);
J'ai eu le même problème. Vous pouvez le résoudre en vous déplaçant là où se trouve laasGif()
. Il doit venir directement avant.load()
.
Alors changez:
Glide.with(context)
.load(ImageUrl())
.placeholder(R.drawable.loading2)
.asGif()
....
à
Glide.with(context)
.asGif()
.load(ImageUrl())
.placeholder(R.drawable.loading2)
....
À partir de la version 4 de Glide:
Dépendance:
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
Visitez ce lien Pour créer la classe GlideApp:
Vous pouvez directement donner une référence tirable sur GlideApp
GlideApp.with(this).load(R.drawable.ic_loader).into(mBinding.progressBar);
Si vous obtenez une erreur, s'il vous plaît faites le moi savoir.
Utilisez GlideDrawableImageViewTarget. Ce code fonctionne pour moi.
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
Glide.with(this).load(R.drawable.logo_gif).into(imageViewTarget);
Instead of GlideDrawableImageViewTarget use DrawableImageViewTarget
ImageView imageView =findViewById(R.id.imageView);
DrawableImageViewTarget imageViewTarget = new DrawableImageViewTarget (imageView);
Glide.with(this).load(R.raw.image_loader).into(imageViewTarget);
library: implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
Essaye ça. Cela a fonctionné pour moi et fonctionnera aussi pour votre code. Cela fonctionne aussi bien pour les images que pour les gifs.
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);
}
Cette solution est un genre de travail autour de
<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>
au lieu d’en utiliser un, utilisez 2 ImageViews
Mettez le gif de chargement en premier dans ImageView en utilisant la solution donnée par @Preetam
ImageView loadingImageView = (ImageView) findViewById(R.id.loadingImageView);
GlideDrawableImageViewTarget loadingImageViewTarget = new GlideDrawableImageViewTarget(loadingImageView);
Glide.with(this).load(R.raw.spinner).into(loadingImageViewTarget);
Charger une image depuis le réseau dans la deuxième image Image (L'ordre est important si vous ne voulez pas masquer le gif de chargement une fois L'image du réseau est chargée)
ImageView mainImageView = (ImageView) findViewById(R.id.mainImageView);
GlideDrawableImageViewTarget mainImageViewTarget = new GlideDrawableImageViewTarget(mainImageView);
Glide.with(this).load(imageUrl).into(mainImageViewTarget);