从资源对象中检索所有Drawable资源
在我的Android项目中,我想遍历整个Drawable
资源集合。 通常情况下,您只能使用类似于以下内容的ID来检索特定资源:
InputStream is = Resources.getSystem().openRawResource(resourceId)
但是,我想要获取所有Drawable
资源,但事先不知道他们的ID。 有没有一个集合,我可以循环或者可能的方式来获得我的项目资源中的资源ID列表?
或者,Java中有没有一种方法可以从R.drawable
静态类中提取所有属性值?
如果你发现自己想要这样做,你可能会滥用资源系统。 如果您想遍历包含在.apk文件中的文件,请查看assets和AssetManager
。
好吧,这感觉有点不好,但这是我通过反思想出来的。 (请注意, resources
是类android.content.res.Resources
一个实例。)
final R.drawable drawableResources = new R.drawable();
final Class<R.drawable> c = R.drawable.class;
final Field[] fields = c.getDeclaredFields();
for (int i = 0, max = fields.length; i < max; i++) {
final int resourceId;
try {
resourceId = fields[i].getInt(drawableResources);
} catch (Exception e) {
continue;
}
/* make use of resourceId for accessing Drawables here */
}
如果任何人有更好的解决方案可以更好地使用我可能不知道的Android通话,我一定会喜欢看到它们!
我使用getResources()。getIdentifier来扫描顺序命名的图像在我的资源文件夹中。 为了安全起见,我决定在第一次创建活动时缓存图像id:
private void getImagesIdentifiers() {
int resID=0;
int imgnum=1;
images = new ArrayList<Integer>();
do {
resID=getResources().getIdentifier("img_"+imgnum, "drawable", "InsertappPackageNameHere");
if (resID!=0)
images.add(resID);
imgnum++;
}
while (resID!=0);
imageMaxNumber=images.size();
}
链接地址: http://www.djcxy.com/p/59993.html
上一篇: Retrieving all Drawable resources from Resources object
下一篇: How to force IntelliJ to only step into my source code?