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.
El método .into
proporciona un segundo argumento que es una devolución de llamada al éxito y al fracaso. Puede usar esto para realizar un seguimiento de cuándo se han llamado a los tres y actuar de acuerdo con su visibilidad, todo a la vez.