web-dev-qa-db-ja.com

Android drawableから文字列として画像パスを取得

Android as String。でDrawableフォルダから画像パスを取得する方法はありますか?SD上のパスを使用して画像を表示する独自のビューフローを実装するため、これが必要ですカードですが、表示する画像がないときにデフォルトの画像を表示したいです。

それを行う方法はありますか?

31
Android-Droid

これらはすべて方法です:

String imageUri = "drawable://" + R.drawable.image;

私がテストした他の方法

Uri path = Uri.parse("Android.resource://com.segf4ult.test/" + R.drawable.icon);
Uri otherPath = Uri.parse("Android.resource://com.segf4ult.test/drawable/icon");

String path = path.toString();
String path = otherPath .toString();
47
karan

上記の回答のいくつかに基づいて、私はそれを少し即興しました

このメソッドを作成し、リソースを渡して呼び出します

再利用可能なメソッド

public String getURLForResource (int resourceId) {
    return Uri.parse("Android.resource://"+R.class.getPackage().getName()+"/" +resourceId).toString();

// R.class.getPackage()。getName()の代わりにBuildConfig.APPLICATION_IDを使用して、両方が同じでない場合

}

サンプル呼び出し

getURLForResource(R.drawable.personIcon)

complete イメージの読み込みの例

String imageUrl = getURLForResource(R.drawable.personIcon);
// Load image
 Glide.with(patientProfileImageView.getContext())
          .load(imageUrl)
          .into(patientProfileImageView);

関数getURLForResourceをUtilファイルに移動して、staticにして、再利用できるようにすることができます。

13
mshah

パスから画像を取得する場合は、描画可能なフォルダーのパスを把握するのではなく、アセットを使用することをお勧めします。

    InputStream stream = getAssets().open("image.png");
    Drawable d = Drawable.createFromStream(stream, null);
2
jmgomez

Stringとして取得することはできないと思いますが、リソースintを取得することでidとして取得できます。

int resId = this.getResources().getIdentifier("imageNameHere", "drawable", this.getPackageName());
0
ARN