我正在使用Picasso库v2.5.2进行演示应用程序。它适用于所有Android操作系统版本,但不适用于棒棒糖。
大小为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中的错误?
答案 0 :(得分:13)
这是一个已知问题。问题是毕加索对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末尾所看到的那样,原始开发人员通过使用额外的缓冲区解决了这个BitmapFactory问题。
答案 1 :(得分:0)
如果您只需要将图片加载到Target
,为什么要使用ImageView
?只需使用:
Picasso.with(this).load(URL).into(imageView, new Callback()
{
@Override
public void onSuccess()
{
//Dimiss progress dialog here
}
@Override
public void onError()
{
//And here
}
});
有关文档,请查看here。
答案 2 :(得分:0)
Picasso.with(this).load("http://webneel.com/wallpaper/sites/default/files/images/04-2013/island-beach-scenery-wallpaper.jpg").placeholder(R.mipmap.ic_launcher).fit().into(imageView, new Callback() {
@Override public void onSuccess()
{
}
@Override public void onError()
{
}
});
fit()将帮助您加载图像。并在xml的ImageView中使用android:adjustViewBounds =“true”。