【发布时间】:2014-11-15 07:04:55
【问题描述】:
我正在编写一个应用程序,其中使用放置在可绘制文件夹中的 200 多个图像,并且所有这些文件都遵循相同的命名约定,例如 thumb+X
读取/显示这些文件的一种方法是通过关注R.drawable.XXX 选择每个可绘制文件。
有没有办法使用循环或其他方式读取这些文件名..所以无论它会在drawable中更新多少文件,都不需要触摸源文件。
任何建议!
【问题讨论】:
我正在编写一个应用程序,其中使用放置在可绘制文件夹中的 200 多个图像,并且所有这些文件都遵循相同的命名约定,例如 thumb+X
读取/显示这些文件的一种方法是通过关注R.drawable.XXX 选择每个可绘制文件。
有没有办法使用循环或其他方式读取这些文件名..所以无论它会在drawable中更新多少文件,都不需要触摸源文件。
任何建议!
【问题讨论】:
您可以使用以下函数首先获取资源ID,如下所示:
int resource_id=getResources().getIdentifier("thumb"+x, "drawable", getPackageName());
假设您在 Activity 内(getResources / getPackageName 是 Activity 方法)
如果你需要Drawable
Drawable myDrawable=getResources().getDrawable (resource_id);
请注意,按名称访问可绘制对象的速度较慢,您不应滥用此方法。
【讨论】:
首先你创建一个类似的字符串值非常简单。
String name= "R.drawable.thumb";
现在像这样循环
for(int i=1;i<=200;i++){
String resource = name + i;
try {
Class c = Drawable.class;
Field idField = c.getDeclaredField(resource);
int resourceDrwable = idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
}
}
完成了。
另一种方式是
int resourceId=Resources.getSystem().getIdentifier(pDrawableName, "drawable", "android");
【讨论】: