Android as String。でDrawableフォルダから画像パスを取得する方法はありますか?SD上のパスを使用して画像を表示する独自のビューフローを実装するため、これが必要ですカードですが、表示する画像がないときにデフォルトの画像を表示したいです。
それを行う方法はありますか?
これらはすべて方法です:
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();
上記の回答のいくつかに基づいて、私はそれを少し即興しました
このメソッドを作成し、リソースを渡して呼び出します
再利用可能なメソッド
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にして、再利用できるようにすることができます。
パスから画像を取得する場合は、描画可能なフォルダーのパスを把握するのではなく、アセットを使用することをお勧めします。
InputStream stream = getAssets().open("image.png");
Drawable d = Drawable.createFromStream(stream, null);
String
として取得することはできないと思いますが、リソースint
を取得することでid
として取得できます。
int resId = this.getResources().getIdentifier("imageNameHere", "drawable", this.getPackageName());