使用毕加索库

时间:2015-05-28 10:15:32

标签: android picasso

我正在使用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中的错误?

3 个答案:

答案 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”。