web-dev-qa-db-ja.com

androidピカソを読み込んだ後、描画可能な画像を取得する

Picassoライブラリを使用してURLから画像を読み込みます。私が使用したコードは以下のとおりです。

Picasso.with(getContext()).load(url).placeholder(R.drawable.placeholder)
                .error(R.drawable.placeholder).into(imageView);

私がしたいのは、URLからロードされた画像を取得することです。使った

Drawable image = imageView.getDrawable();

ただし、これにより、URLからの画像の読み込みではなく、常にプレースホルダー画像が返されます。何か考えがありますか? URLからロードしたばかりのドローアブル画像にアクセスするにはどうすればよいですか。

前もって感謝します。

14
Shumin

これは、画像が非同期で読み込まれているためです。ビューへのロードが完了したら、ドローアブルを取得する必要があります。

   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);
26
Shane
        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() {
                                // ...
                            }
                        });
            }
        });
2
Erlang P