安卓使用Picasso加载图片后如何获取Drawable图像

14

我正在使用Picasso库从URL加载图像。 我使用的代码如下。

Picasso.with(getContext()).load(url).placeholder(R.drawable.placeholder)
                .error(R.drawable.placeholder).into(imageView);
我想做的是获取从url加载的图像。我使用了
Drawable image = imageView.getDrawable();

然而,这将始终返回占位图像,而不是从URL加载的图像。你们有什么想法吗?我该如何访问刚刚从URL加载的可绘制图像。

提前致谢。

2个回答

25

这是因为图片是异步加载的。你需要在加载完成后获取可绘制对象并将其加载到视图中:

   Target target = new Target() {
          @Override
          public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
              imageView.setImageBitmap(bitmap);
              Drawable image = imageView.getDrawable();
          }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {}

        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {}
   };

   Picasso.with(this).load("url").into(target);

我该如何使用loadBitmap()函数?我需要调用Picasso两次吗? - Shumin
不,那只是一个空方法,你需要调用它来加载图像。你不需要它。(参见更新的答案) - Shane
1
这是无用的,“fit,centercrop”不起作用,那么使用Picasso有什么意义呢??您可以通过正常的Picasso回调获取可绘制对象:into(targetImageView,new Callback(){ @Override public void onSuccess() { targetImageView.getDrawable(); } - user924

2
        mImageView.post(new Runnable() {
            @Override
            public void run() {
                mPicasso = Picasso.with(mImageView.getContext());
                mPicasso.load(IMAGE_URL)
                        .resize(mImageView.getWidth(), mImageView.getHeight())
                        .centerCrop()
                        .into(mImageView, new com.squareup.picasso.Callback() {
                            @Override
                            public void onSuccess() {
                                Drawable drawable = mImageView.getDrawable();
                                // ...
                            }

                            @Override
                            public void onError() {
                                // ...
                            }
                        });
            }
        });

1
你可能想要添加一些解释,说明这段代码是如何解决问题的。 - mustaccio

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