java - manejo - para que sirve la libreria picasso en android studio
¿Cómo escuchar a Picasso(Android) cargar eventos completos? (7)
Como complemento a otras respuestas, en caso de que no sepa dónde usar la vista de imagen original, por ejemplo,
ImageView myIV
:
Original:
Picasso.with(activity).load(url).into(myIV);
Nuevo (dentro de
onBitmapLoaded()
del
new Target()
):
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
myIV.setImageBitmap(bitmap);
}
¿Hay alguna manera de escuchar eventos de Picasso cuando se usa el constructor como:
Picasso.with(getContext()).load(url).into(imageView);
Estoy tratando de llamar a
requestLayout()
e
invalidate()
en el
GridView
padre para que cambie de tamaño correctamente, pero no sé cómo configurar un escucha o una devolución de llamada.
Veo que Picasso tiene informes de eventos de error, pero ¿hay algún evento exitoso?
Prueba esto
Picasso.with(context)
.load(services.get(position).getImageInactive())
.into(holder.icon, new Callback() {
@Override
public void onSuccess() {
holder.imageLoad.setVisibility(View.GONE);
}
@Override
public void onError() {
holder.icon.setImageResource(R.drawable.ic_error_image_load);
}
});
Puede usar una
Callback
de
Callback
para obtener eventos onSuccess y onError.
Simplemente agregue una nueva devolución de llamada a su solicitud de la siguiente manera:
Picasso.with(getContext())
.load(url)
.into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
}
});
Luego puede realizar cualquier alteración y modificación en la devolución de llamada onSuccess.
Respondiendo a la pregunta de seguimiento de @Jas como un comentario a la respuesta de MrEngineer13 (ya que no tengo suficiente reputación para comentar en ninguna respuesta), debe usar el método
error()
antes de registrar la
Callback
de
Callback
en el método
into()
, por ejemplo :
Picasso.with(getContext())
.load(url)
.error(R.drawable.error_placeholder_image)
.into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
//Success image already loaded into the view
}
@Override
public void onError() {
//Error placeholder image already loaded into the view, do further handling of this situation here
}
}
);
Si necesita acceder al mapa de bits antes de que se cargue en la vista, intente usar:
private Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
}
@Override
public void onBitmapFailed() {
}
}
En el método de llamada:
Picasso.with(this).load("url").into(target);
Lo ideal sería implementar Target en una vista u objeto de soporte de vista directamente.
Espero que esto ayude
Square recientemente ha actualizado la clase Target y ahora hay más métodos para anular (
onPrepareLoad
y
onBitmapFailed
):
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
Y todavía tienes que usar:
Picasso.with(context).load(url).into(target);
private final Callback mImageCallback = new Callback() {
@Override
public void onSuccess() {
startPostponedEnterTransition();
}
@Override
public void onError() {
startPostponedEnterTransition();
}
};
RequestCreator creator = Picasso.with(getActivity()).load(list.get(position).getId());
creator.into(imageView, mImageCallback);