从资源对象中检索所有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();
}
上一篇: Retrieving all Drawable resources from Resources object
下一篇: How to force IntelliJ to only step into my source code?
