如何使用Picasso加载位图而不使用ImageView?

31

使用ImageView,我可以使用以下代码通过回调下载图像

Picasso.with(activity).load(url).into(imageView, new Callback()
{
    @Override
    public void onSuccess() 
    {
        // do something
    }

    @Override
    public void onError() { }
);

或者从这个Picasso.with(activity).load(url).get();中获取位图。有没有办法为仅下载图像添加回调?如有可能,请提供示例代码,谢谢!

1个回答

47

您可以创建一个Target,然后在目标的回调方法onBitmapLoaded(...)中修改Bitmap。以下是具体步骤:

// make sure to set Target as strong reference
private Target loadtarget;

public void loadBitmap(String url) {

    if (loadtarget == null) loadtarget = new Target() {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
            // do something with the Bitmap
            handleLoadedBitmap(bitmap);
        }

        @Override
        public void onBitmapFailed() {

        }
    };

    Picasso.with(this).load(url).into(loadtarget);
}

public void handleLoadedBitmap(Bitmap b) {
    // do something here
}

编译器抱怨在myLoadedBitmap上添加final,但显然我无法分配它,是否有可能修复? - EES
由于我尝试分享到Instagram,从本地drawable分享是可以的,但从URL分享就不行。正在解决中... - EES
我注意到在onPrepareLoad之后不会调用onBitmapLoaded。http://i.imgur.com/kKdba3d.png - EES
请确保将目标设置为强引用,效果非常好!谢谢。 - EES
String url 的值将是什么? - Mohamed ALOUANE
@MedAL 那应该是图片的URL。 - Lee Han Kyeol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接