Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Glide: ¿Cómo descargar y almacenar en caché los mapas de bits?

Estoy utilizando Glide para descargar y almacenar imágenes en caché en Android. Todo funciona bien, excepto el hecho de que no quiero cargar los mapas de bits directamente en el ImageView , no quiero tener la animación de fundido, ni los marcadores de posición de la imagen.

Todo lo que quiero es crear un método global que me ayude a descargar la imagen en toda la aplicación.

  • Cómo obtener el número de contacto específico mediante el uso de Id de contacto
  • Bug con FloatingActionButton anclado en la biblioteca de soporte 24.2.1
  • Android Volley Null Pointer Exception
  • Disposición de Android - peso de diseño y weightsum
  • Cambiar el color predeterminado de la marca de verificación de CheckBox de Android
  • ¿Cómo databind a onTextChanged para un EditText en Android?
  •  public class MyApp extends Application { public static void downloadImage(String url, final OnImageLoadedCallback callback) { // And how to implement the listener ? RequestListener<String, Bitmap> requestListener = new RequestListener<String, Bitmap() { @Override public boolean onException(Exception exc, String string, Target<Bitmap> target, boolean isFirstResource) { callback.onDone(null); return false; } @Override public boolean onResourceReady(Bitmap bitmap, String string, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) { callback.onDone(bitmap); return false; } }; Glide.with(context) .load(url) .asBitmap() .dontAnimate() .diskCacheStrategy(DiskCacheStrategy.SOURCE) .listener(requestListener); } } 

    El problema es que no sé cómo implementar el oyente. RequestListener no se llama en absoluto.

  • Usando AsyncTask de esta manera: "new AsyncTask () {" me está dando errores
  • Programar de forma programada android: layout_centerHorizontal
  • ¿Por qué la misma interfaz se procesa de manera diferente en un emulador y un dispositivo?
  • Switch case statement error: las expresiones case deben ser constantes
  • ¿Cómo utilizar ItemAnimator en un RecyclerView?
  • Parpadeo de la pantalla de OpenGL ES 2.0
  • 2 Solutions collect form web for “Android Glide: ¿Cómo descargar y almacenar en caché los mapas de bits?”

    Las cargas en Glide no empiezan hasta que hagas una llamada. La interfaz RequestListener observa las solicitudes, pero normalmente no se utiliza para manejar los resultados. En lugar de usar RequestListener, considere la posibilidad de que su devolución de llamada implemente la interfaz de destino y pase en utilizar en .

    Alternativamente, puedes simplemente extender SimpleTarget y pasarlo a cada solicitud de la misma manera que estás intentando usar RequestListener:

     Target target = Glide.with(context) ... .into(new SimpleTarget<Bitmap>(width, height) { @Override public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { callback.onDone(resource); } @Override public void onLoadFailed(Exception e, Drawable errorDrawable) { callback.onDone(null); } }); // At some point later, if you want to cancel the load: Glide.clear(target); 

    Deberá proporcionar una anchura y una altura para que Glide pueda reducir la imagen y transformar las imágenes apropiadamente. También puedes ejecutar problemas con la cancelación si estás mostrando estos mapas de bits en las vistas, en cuyo caso recomendaría encarecidamente que la vista esté disponible para tu API de carga y pases la vista a la que manejaremos el tamaño y la cancelación para ti.

    Uso Glide 3.7.0 y descargar imágenes de esta manera:
    Es importante tener en cuenta – se ejecuta asincrónica

     Glide.with(this) .load(url) .downloadOnly(new SimpleTarget<File>() { @Override public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) { LOGGER.debug("Photo downloaded"); } }); 

    Cuando necesito mostrar la imagen en caché, uso la misma url y DiskCacheStrategy.SOURCE :

     Glide.with(this) .load(url) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .into(imageView); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.