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?

30
demandé sur Alexander Farber 2015-06-27 00:20:16

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);
105
répondu Preetam 2016-01-19 07:26:30

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()

20
répondu Sam Judd 2015-06-30 01:14:10

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)
    ....
8
répondu marc 2017-07-23 04:25:25

Pour Le Plané 4.+

ImageView imageView = (ImageView) findViewById(R.id.imageView);
Glide.with(this).asGif().load(R.raw.image_gif).into(imageView);
6
répondu Sachin Thampan 2018-09-30 09:07:21

Utilisez GlideDrawableImageViewTarget. Ce code fonctionne pour moi.

GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);

Glide.with(this).load(R.drawable.logo_gif).into(imageViewTarget);
1
répondu Sukhdeep Saini 2018-02-17 06:45:56

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);
}
0
répondu Saket Kumar 2017-02-17 22:47:28

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>
  1. au lieu d'utiliser un, Utilisez 2 ImageViews

  2. 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);  
    
  3. 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);
    
0
répondu Saleem Khan 2018-01-11 18:20:15

Ici, c'est Le Meilleur Moyen

 Glide.with(a).load(item[position])
            .thumbnail(Glide.with(a).load(R.drawable.preloader))
            .fitCenter()
            .crossFade()
            .into(imageView);
-1
répondu Mahmoud Kamal 2016-10-09 18:48:27

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);
-1
répondu Arpit Jain 2018-02-18 06:38:22