usar studio sirve que para libreria implementar glide dev dependencia como adding java android picasso

java - studio - picasso android dev



DevoluciĆ³n de carga de imagen de Picasso (4)

Quiero usar Picasso para cargar tres imágenes consecutivas una encima de la otra en una vista de lista. El uso de los métodos que proporciona Picasso lo hace fácil. Sin embargo, debido a que estas imágenes se cargan en diferentes momentos, produce un efecto de parpadeo cuando las imágenes entran. Por ejemplo, a veces la imagen 2 aparece antes que la imagen 1, y cuando la imagen 1 se carga, produce un tartamudeo no natural. Sería mejor si pudiera establecer la visibilidad de la vista de lista como invisible hasta que todas las imágenes estén disponibles para mostrarse. Sin embargo, no hay ningún método de devolución de llamada que pueda encontrar para Picasso que indique cuándo se ha cargado una imagen.

¿Alguien sabe de una solución para este tipo de situación usando Picasso?

Gracias


Aquí hay un ejemplo simple de cómo imponer la devolución de llamada de carga de la imagen de Picasso:

Picasso.with(MainActivity.this) .load(imageUrl) .into(imageView, new com.squareup.picasso.Callback() { @Override public void onSuccess() { //do smth when picture is loaded successfully } @Override public void onError() { //do smth when there is picture loading error } });


Puede implementar una devolución de llamada con Picasso como se muestra a continuación:

ImageHandler.getSharedInstance(getApplicationContext()).load(imString).skipMemoryCache().resize(width, height).into(image, new Callback() { @Override public void onSuccess() { layout.setVisibility(View.VISIBLE); } @Override public void onError() { } }); }

La implementación de mi clase de ImageHandler se muestra a continuación:

public class ImageHandler { private static Picasso instance; public static Picasso getSharedInstance(Context context) { if(instance == null) { instance = new Picasso.Builder(context).executor(Executors.newSingleThreadExecutor()).memoryCache(Cache.NONE).indicatorsEnabled(true).build(); } return instance; } }


Puedes usar el objeto Target . Una vez que el target1 recibe la devolución de llamada, puede descargar el segundo activo, luego obtener la devolución de llamada en el target2 y luego activar la tercera descarga.