有没有办法可以从android中的drawable文件夹中获取图像路径作为String。我需要这个,因为我实现了我自己的viewflow,我在sd卡上使用他们的路径显示图像,但我想在没有图像显示时显示默认图像。
任何想法如何做到这一点?
答案 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
}