web-dev-qa-db-ja.com

PicassoはURIから描画可能なリソースをロードします

drawableからresImageViewを表示する必要があります。このアプリでは、いくつかの理由でピカソを使用しています。

この場合、IDではなくURIを使用してdrawableをロードする必要があります。それを行うために、ここに私のコードがあります:

uri = Uri.parse(ContentResolver.SCHEME_Android_RESOURCE + "://"+context.getPackageName()+"/drawable/" + drawableName);

ここで使用されるdrawableNameは、リソースIDではなくファイル名です。

それから

Picasso.with(context).load(uri).into(imageView);

描画可能な名前が正しいことは確かに知っていますが、ピカソはこのURIが好きではないようです。

38
Daniele Vitali

答えを見つけました。残念ながら、PicassoはURIを介したドロアブルロードを許可していません。これは着信機能です。

8
Daniele Vitali

画像が描画可能なフォルダにある場合は、それをロードするだけです。

Picasso.with(context).load(R.drawable.drawableName).into(imageView);

ピカソはウリを必要とせずにロードします。

76
Aegis
  • これは、ロードしようとしている画像をハードコーディングしたくない場合です...

ロードしたいイメージの整数値がわかっている場合は、描画可能フォルダーからローカルイメージファイルを遅延してロードできます。

その後、あなたはちょうどすることができます:

Picasso.with(getContext()).load(imageResourceId)
.error(R.drawable.ic_launcher)
.into(imageView);

どこ

imageView

画像を表示したいビューです。例えば:

imageView = (ImageView) convertView
.findViewById(R.id.itemImage);

そしてどこに

imageResourceId

は、ドロアブルの整数値です。この整数値は次の方法で取得できます。

int productImageId = resources.getIdentifier(
productImageName, "drawable", context.getPackageName());

と同様

productImageName

描画するドロアブルの名前です(つまり、「ic_launcher」)

これはすべて[〜#〜] adapter [〜#〜]内で実行できます。

9
RheeBee

picasso v2 +からここに大きな変更があります。新しいバージョンは、画像キャッシュデータを管理するために非常に役立ちます。シングルトンインスタンスを使用しています。

[〜#〜] gradle [〜#〜]

implementation 'com.squareup.picasso:picasso:2.71828'

描画可能な画像を設定

Picasso.get()
    .load(url)
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(imageView);

ボーナス、名前で描画可能:

public static int getDrawableIdFromFileName(Context context, String nameOfDrawable) {
        return context.getResources().getIdentifier(nameOfDrawable, "drawable", context.getPackageName());
}
6

Picasso のドキュメントで述べたように。

次のようなURIからの画像の読み込みをサポートしています。

load(Android.net.Uri uri) 

そのため、次のようなことをする必要があります。

Picasso.with(context).load(uri).into(imageView); 

あなたがすでにやっていることのように。

Hopethatが役立ちます。

6
user957654