Définir la visibilité de la barre de progression à la fin du chargement de l’image à l’aide de la bibliothèque Glide

Salut je veux avoir une barre de progression pour l’image qui apparaîtra pendant le chargement de l’image mais quand le chargement de l’image sera terminé je veux le régler. Plus tôt, j’utilisais la bibliothèque Picasso pour cela. Mais je ne sais pas comment l’utiliser avec la bibliothèque Glide. Je pense que certaines fonctions de ressources sont disponibles, mais je ne sais pas comment les utiliser. Quelqu’un peut-il m’aider?

Code pour la bibliothèque Picasso

Picasso.with(mcontext).load(imgLinkArray.get(position).mUrlLink) .into(imageView, new Callback() { @Override public void onSuccess() { progressBar.setVisibility(View.GONE); } @Override public void onError() { } }) ; 

Maintenant, comment puis-je faire cela avec Glide?

 Glide.with(mcontext).load(imgLinkArray.get(position).mUrlLink) .into(imageView); 

Je peux charger cette image avec Glide, mais comment puis-je écrire progressBar.setVisibility(View.GONE); quelque part dans le code si l’image est chargée?

La question est plutôt ancienne et je ne sais pas quelle était la situation avec le glissement à cette époque, mais maintenant, cela peut être fait facilement avec l’auditeur (pas comme proposé dans la réponse choisie comme étant correcte).

 progressBar.setVisibility(View.VISIBLE); Glide.with(getActivity()) .load(args.getSsortingng(IMAGE_TO_SHOW)) .listener(new RequestListener() { @Override public boolean onException(Exception e, Ssortingng model, Target target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(GlideDrawable resource, Ssortingng model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { progressBar.setVisibility(View.GONE); return false; } }) .into(imageFrame) ; 

Vous retournez vrai si vous voulez gérer des choses comme les animations vous-même et fausses si vous voulez les gérer pour vous.

Ma réponse était basée sur des API obsolètes. Voir ici pour la réponse la plus récente.

En exception mettre une condition pour montrer à nouveau le ProgressBar

  Glide.with(context) .load(image_url) .listener(new RequestListener() { @Override public boolean onException(Exception e, Ssortingng model, Target target, boolean isFirstResource) { if(e instanceof UnknownHostException) progressBar.setVisibility(View.VISIBLE); return false; } @Override public boolean onResourceReady(GlideDrawable resource, Ssortingng model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { progressBar.setVisibility(View.GONE); return false; } }) .into(imageView); 

La solution ci-dessus fonctionne très bien pour moi aussi, mais lorsque j’utilise asBitmap () pour télécharger l’image. Ça ne marche pas.

Il faut utiliser BitmapImageViewTarget

 Glide.with(this) .load(imageURL) .asBitmap() .placeholder(R.drawable.bg) .into(new BitmapImageViewTarget(imageView) { @Override public void onResourceReady(Bitmap drawable, GlideAnimation anim) { super.onResourceReady(drawable, anim); progressBar.setVisibility(View.GONE); } }); 

Si vous voulez faire cela dans KOTLIN, vous pouvez essayer de cette façon:

  Glide.with(context) .load(url) .listener(object : RequestListener { override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean { //TODO: something on exception } override fun onResourceReady(resource: Drawable?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { Log.d(TAG, "OnResourceReady") //do something when picture already loaded return false } }) .into(imgView) 
  1. En XML, prenez la barre de progression avec height & width (match_parent).
  2. Avant d’appeler la méthode mentionnée ci-dessous, définissez la visibilité de la barre de progression Visible.

     public void setImageWIthProgressBar(Context context, final ImageView imageView, Ssortingng imageUrl, final ProgressBar progressBar) { Glide.with(context) .load(imageUrl) .listener(new RequestListener() { @Override public boolean onException(Exception e, Ssortingng model, Target target, boolean isFirstResource) { progressBar.setVisibility(View.GONE); return false; } @Override public boolean onResourceReady(GlideDrawable resource, Ssortingng model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { progressBar.setVisibility(View.GONE); return false; } }) .into(imageView); }//setImageWIthProgressBar 

C’est la meilleure réponse, car elle n’utilise aucun hack comme la visibilité pour obtenir le résultat souhaité.

Téléchargez un fichier de progression de la barre de progression et appelez-le progressbargif et placez-le dans le dossier à dessin.

  Glide.with(ctx) .load(url) .thumbnail(Glide.with(ctx).load(R.drawable.progressbargif)) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .error(R.drawable.image_unavailable) .crossFade(200) .into(iv); 

Une fois l’image URL chargée, la vignette disparaît. La vignette disparaît immédiatement lorsque l’image en cache est chargée.