在Picasso中使用Callback获取图像?

Oli*_*ler 11 android picasso

我想展示一张照片系列,照片之间没有间隙,照片会定期更换.我意识到Picasso在开始下载之前初始化了ImageView,无论我是否在调用()之前获取(),它总是这样做.

我使用fetch()来保持图像之间的间隙较小,并使用.placeholder(R.color.black),但即使从内存加载图像,间隙仍然可见.

我的代码看起来像这样

Picasso.with(getContext()).load(url).fetch();
Run Code Online (Sandbox Code Playgroud)

然后延迟[目前正在修复,我想根据网络速度调整]

Picasso.with(getContext()).load(url).into(screenSurface);
Run Code Online (Sandbox Code Playgroud)

我注意到fetch()不支持任何回调参数并返回void,因此我似乎不可能知道缓存何时变暖.

两个问题:

  1. 在缓存图像时我能注意到吗?
  2. 是否有可能采用不同的方法摆脱图像之间的断裂并使它们经常出现.

[我知道我可以用某种方式手动编码,但如果Picasso支持它,我想使用它.]

bma*_*mat 16

根据来源,看起来fetch在完成时什么都不做,包括通知任何潜在的听众.不幸的是,FetchAction它不是公共类,因此您也无法覆盖此功能.

您可以使用自定义Target子类来解决此问题,如下所示:

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) { }
});
Run Code Online (Sandbox Code Playgroud)

  • 在我的解决方案中使用解决方法之后,你可以将`load(url).fit().调用到(screenSurface)`,只要`url`是相同的,我相信它将从缓存中加载. (2认同)

Dun*_*gan 5

我知道这是一个较旧的问题,但该fetch()命令允许回调,如fetch(Callback callback).这有一个onSuccess()onError()回调请求的URI负载.

有关javadoc的详细信息,请参见此处