I want to show a photo series with no gaps in-between the photos, where photos change in a regular interval. I realized Picasso initializes the ImageView before it starts downloading, and it always does that, no matter if I fetch() or not before calling into().
I fetch() to keep the gap between images small and also use .placeholder(R.color.black), but the gap is still visible, even when the image is loaded from memory.
My code looks like this
Picasso.with(getContext()).load(url).fetch();
then with a delay [which is currently fix and which I want to adjust dependent on network speed]
Picasso.with(getContext()).load(url).into(screenSurface);
I noticed that fetch() does not support any callback parameters and returns void, so it seems it's not possible for me to know when the cache is warmed.
Two questions:
[I know I could manually code this somehow, but if Picasso supports it, I'd like to use it.]
Based on the source, it looks like fetch
does nothing upon completion, including notifying any potential listeners. Unfortunately, FetchAction
isn't a public class, so you can't override this functionality either.
You can workaround this problem by using a custom Target
subclass, like this:
Picasso.with(getContext()).load(url).into(new Target() {
@Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
// cache is now warmed up
}
@Override public void onBitmapFailed(Drawable errorDrawable) { }
@Override public void onPrepareLoad(Drawable placeHolderDrawable) { }
});
I know this is an older question but the fetch()
command allows for callbacks such as fetch(Callback callback)
.
This has an onSuccess()
and onError()
callback for the requested URI load.
See here for javadoc details
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With