Afficher le fichier GIF avec la bibliothèque Glide (chargement d'image et mise en cache))
j'essaie de montrer une image GIF en chargeant le paramètre placeholder dans la vue d'image - avec Glide Library:
Glide.with(context)
.load(ImageUrl())
.placeholder(R.drawable.loading2)
.asGif()
.crossFade()
.into(image);
j'ai essayer de montrer ce fichier
loading2.gif
mais obtiens cette erreur :
Erreur:(54, 86) erreur: impossible de trouver le symbole de la méthode asGif()
Comment puis-je afficher un fichier GIF avec Glide dans une imageView?
9 réponses
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 l'utilisation de load()
chargera soit un GIF soit un Bitmap selon le type de données. Sauf si vous voulez que votre charge à l'échec si l'url n'est pas un gif, vous n'avez pas besoin de spécifier asGif()
j'ai eu ce même problème. Vous pouvez le résoudre en déplaçant où le asGif()
est situé. Il doit venir directement avant .load()
.
Donc changer:
Glide.with(context)
.load(ImageUrl())
.placeholder(R.drawable.loading2)
.asGif()
....
Glide.with(context)
.asGif()
.load(ImageUrl())
.placeholder(R.drawable.loading2)
....
Pour Le Plané 4.+
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Glide.with(this).asGif().load(R.raw.image_gif).into(imageView);
Utilisez GlideDrawableImageViewTarget. Ce code fonctionne pour moi.
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
Glide.with(this).load(R.drawable.logo_gif).into(imageViewTarget);
Essayez ceci. Ça a marché pour moi et ça marchera aussi pour ton 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 le 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'utiliser un, Utilisez 2 ImageViews
charger gif dans la première 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 L'Image du réseau dans la Seconde ImageView (L'ordre est important si vous ne voulez pas cacher le GIF de chargement une fois l'image du réseau est chargé)
ImageView mainImageView = (ImageView) findViewById(R.id.mainImageView); GlideDrawableImageViewTarget mainImageViewTarget = new GlideDrawableImageViewTarget(mainImageView); Glide.with(this).load(imageUrl).into(mainImageViewTarget);
Ici, c'est Le Meilleur Moyen
Glide.with(a).load(item[position])
.thumbnail(Glide.with(a).load(R.drawable.preloader))
.fitCenter()
.crossFade()
.into(imageView);
planer joue automatiquement gif fichiers, pas besoin de méthode supplémentaire
utiliser le code ci-dessous
Glide.with(this)
.load(R.drawable.logo)
.into(imageView);