libreria glide ejemplo developer android imageview android-glide

android - ejemplo - glide vs picasso



Establezca la visibilidad de la barra de progreso desaparecida al completar la carga de imágenes usando la biblioteca Glide (10)

Hola, quiero tener una barra de progreso para la imagen que se mostrará mientras se carga la imagen, pero cuando se complete la carga de la imagen, quiero que desaparezca. Anteriormente estaba usando la biblioteca Picasso para esto. Pero no sé cómo usarlo con la biblioteca Glide. Tengo idea de que hay alguna función lista para recursos, pero no sé cómo usarla. ¿Alguien puede ayudarme?

Código para la Biblioteca 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() { } }) ;

Ahora, ¿cómo puedo hacer esto con Glide?

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

Puedo cargar una imagen con Glide, pero ¿cómo puedo escribir progressBar.setVisibility(View.GONE); en algún lugar del código si se carga la imagen?


  1. En xml, tome la barra de progreso con alto y ancho (match_parent).
  2. Antes de llamar a continuación, mencione el método, configure la barra de progreso de visibilidad Visible.

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


En Kotlin puedes hacer lo siguiente

Glide.with(context) .setDefaultRequestOptions(RequestOptions().placeholder(R.drawable.ic_image_placeholder).error(R.drawable.ic_image_placeholder)) .load(url) .listener(object : RequestListener<Drawable>{ override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean { return false } override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { return false } }) .into(imageView)


En excepción, ponga una condición para mostrar nuevamente la ProgressBar

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


Esta es la mejor respuesta, ya que no utiliza ningún truco como configurar la visibilidad para obtener el resultado deseado.

Descarga un gif de barra de progreso y llámalo progressbargif y colócalo en la carpeta dibujable.

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

Una vez que se carga la imagen de la URL, la miniatura desaparece. La miniatura desaparece inmediatamente cuando se carga la imagen en caché.


GlideDrawable está en desuso, use Drawable simple

RequestOptions requestOptions = new RequestOptions(); requestOptions.placeholder(R.drawable.placeholder); requestOptions.error(R.drawable.error); Glide.with(getContext()) .setDefaultRequestOptions(requestOptions) .load(finalPathOrUrl) .listener(new RequestListener<Drawable>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { progressBar.setVisibility(View.GONE); return false; } @Override public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) { progressBar.setVisibility(View.GONE); return false; } }) .into(mImageView);


La pregunta es bastante antigua, y no sé cuál era la situación con deslizamiento en esos tiempos, pero ahora se puede hacer fácilmente con el oyente (no como se propone en la respuesta elegida como correcta).

progressBar.setVisibility(View.VISIBLE); Glide.with(getActivity()) .load(args.getString(IMAGE_TO_SHOW)) .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) { progressBar.setVisibility(View.GONE); return false; } }) .into(imageFrame) ;

Devuelve verdadero si desea manejar cosas como animaciones usted mismo y falso si quiere planear para manejarlos por usted.


La solución anterior también funciona bastante bien para mí, pero cuando uso asBitmap () para descargar la imagen. No funciona.

Necesitamos usar 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); } });


Mi respuesta se basó en API desactualizadas. Vea here para obtener la respuesta más actualizada.


Si desea hacer esto en KOTLIN, puede intentarlo de la siguiente manera:

Glide.with(context) .load(url) .listener(object : RequestListener<Drawable> { override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean { //TODO: something on exception } override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { Log.d(TAG, "OnResourceReady") //do something when picture already loaded return false } }) .into(imgView)


Actualizar:

Glide.with(this) .load(imageUrl) .listener(new RequestListener<Drawable>() { @Override public boolean onLoadFailed(@Nullable final GlideException e, final Object model, final Target<Drawable> target, final boolean isFirstResource) { showProgress(false); mNoContentTextView.setVisibility(View.VISIBLE); return false; } @Override public boolean onResourceReady(final Drawable resource, final Object model, final Target<Drawable> target, final DataSource dataSource, final boolean isFirstResource) { showProgress(false); mNoContentTextView.setVisibility(View.GONE); mContentImageView.setImageDrawable(resource); return false; } }) .into(mContentImageView);