我正在使用毕加索图书馆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结尾看到的,原始开发人员通过使用额外的缓冲区解决了这个位图工厂问题。