获取可绘制资源目录中的文件名列表

时间:2014-01-04 04:07:18

标签: android android-resources android-drawable

我想在drawable资源目录中获取某些文件名的列表(在运行时,不使用XML)。我想,我需要将某些文件与其他文件区分开来。所以...
* RES /抽拉-HDPI / mysubdir
     - x-one.png
     - one.png
     - x-two.png
     - two.png
     - x-three.png
     - three.png *

我想将x-*.png个文件名放入List<String>。这可能吗? 借用另一个问题中的一些代码,我可以得到所有的drawables,但我没有看到以有意义的方式区分彼此的方法。

private void getDrawableResources() {

final R.drawable drawableResources = new R.drawable();
final Class<R.drawable> drawableClass = R.drawable.class;
final Field[] fields = drawableClass.getDeclaredFields();
final List<Integer> resourceIdList = new ArrayList<Integer>();

for (int i = 0, max = fields.length; i < max; i++) {
    final int resourceId;
    try {
        resourceId = fields[i].getInt(drawableResources);
        resourceIdList.add(resourceId);
    } 
    catch (Exception e) {
        continue;
    }
}

Resources resources = this.getActivity().getResources();
for (int i = 0; i < resourceIdList.size(); i++) {
        Drawable drawable = resources.getDrawable(resourceIdList.get(i));
        resourceIdList.get(i) + "): " +  drawable.toString());
}
}

2 个答案:

答案 0 :(得分:1)

资源目录不支持子目录。

答案 1 :(得分:1)

在获取目录中的文件列表时使用FileNameFilter。

      File dir = new File(dirLocation);

      if(dir.exists() && dir.isDirectory())
        {
            File[] files = dir.listFiles(new FilenameFilter()
            {
                public boolean accept(File dir, String name)
                {
                    return name.contains("X-");
                }
            });
        }