Android从drawable获取图像路径为字符串

时间:2011-12-22 08:18:04

标签: android drawable

有没有办法可以从android中的drawable文件夹中获取图像路径作为String。我需要这个,因为我实现了我自己的viewflow,我在sd卡上使用他们的路径显示图像,但我想在没有图像显示时显示默认图像。

任何想法如何做到这一点?

5 个答案:

答案 0 :(得分:47)

这些都是方法:

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();

答案 1 :(得分:9)

基于上面的一些回复,我有点即兴发布了

创建此方法并通过传递资源

来调用它

可重复使用的方法

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

示例通话

getURLForResource(R.drawable.personIcon)

完成加载图片的示例

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

您可以将函数getURLForResource移动到Util文件并使其 static 以便可以重复使用

答案 2 :(得分:2)

如果您打算从其路径中获取图像,最好使用Assets而不是尝试找出可绘制文件夹的路径。

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

答案 3 :(得分:0)

我认为您无法将其作为String获取,但您可以通过获取资源int将其设为id

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

答案 4 :(得分:-6)

首先检查文件是否存在于SDCard中。如果SDcard中不存在该文件,则可以使用setImageResource()方法设置图像并从drawable文件夹传递默认图像

示例代码

File imageFile = new File(absolutepathOfImage);//absolutepathOfImage is absolute path of image including its name
        if(!imageFile.exists()){//file doesnot exist in SDCard

        imageview.setImageResource(R.drawable.defaultImage);//set default image from drawable folder
        }