我通过json解析图像名称,现在用于显示我必须通过图像名称获取可绘制ID,以便我可以这样做:
background.setBackgroundResource(R.drawable.eventimage1);
当我得到图像名称时,格式如下:
image_ev1.png
答案 0 :(得分:21)
使用此功能可在获得图像名称时获取可绘制的内容。请注意,图像名称不包含文件扩展名。
public static Drawable GetImage(Context c, String ImageName) {
return c.getResources().getDrawable(c.getResources().getIdentifier(ImageName, "drawable", c.getPackageName()));
}
然后只使用setBackgroundDrawable
方法。
如果您只想要ID,请忽略getDrawable部分 即。
return c.getResources().getIdentifier(ImageName, "drawable", c.getPackageName());
答案 1 :(得分:1)
将此方法添加到您的代码中:
protected final static int getResourceID
(final String resName, final String resType, final Context ctx)
{
final int ResourceID =
ctx.getResources().getIdentifier(resName, resType,
ctx.getApplicationInfo().packageName);
if (ResourceID == 0)
{
throw new IllegalArgumentException
(
"No resource string found with name " + resName
);
}
else
{
return ResourceID;
}
}
然后检索你的图像:
Context ctx = getApplicationContext();
background.setBackgroundResource(getResourceID("image_ev1", "drawable", ctx)));
答案 2 :(得分:1)
这会为您提供图片ID
int resId = getResources().
getIdentifier(your_image_name.split("\\.")[0], "drawable", getApplicationInfo().packageName);
如果你之后需要一个drawable:
getResources().getDrawable(resId)
答案 3 :(得分:1)
对于Kotlin程序员(API 22中的ContextCompat):
var res = context?.let { ContextCompat.getDrawable(it,resources.getIdentifier("your_resource_name_string", "drawable", context?.getPackageName())) }
您还可以使用例如如果资源位于其他位置,则使用“ mipmap”而不是“ drawable”。