我正在使用毕加索图书馆2.5.2版的演示应用程序中工作。它在所有安卓操作系统版本上都运行良好,但在棒棒糖中没有。
大小为130KB的图像,我不加载。大小较小的图像正在正确加载。
这是下载位图并在imageview上设置的代码。

target = new Target() {
    @Override
    public void onPrepareLoad(Drawable drawable) {}

    @Override
    public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) {
        if(bitmap != null) {
            imageView.setImageBitmap(bitmap);
        }
    }

    @Override
    public void onBitmapFailed(Drawable drawable) {}
};

Picasso.with(this).load(URL).into(target);

我不知道我要做什么额外的事情,这样我也会在棒棒糖或这是在lib错误?

最佳答案

这是一个已知的问题。问题是毕加索对Target的引用很弱。为了让它工作,您需要使它强大,例如,通过将Target存储为视图标记。

target = new Target() {
    @Override
    public void onPrepareLoad(Drawable drawable) {}

    @Override
    public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) {
        if(bitmap != null) {
            imageView.setImageBitmap(bitmap);
        }
    }

    @Override
    public void onBitmapFailed(Drawable drawable) {}
    };

imageView.setTag(target);
Picasso.with(this).load(URL).into((Target) imageView.getTag());

编辑:
我建议你使用Glide,它与毕加索非常相似,也是谷歌推荐的。正如您在this thread结尾看到的,原始开发人员通过使用额外的缓冲区解决了这个位图工厂问题。

07-28 03:48