计算以特定字符串开头的drawable文件夹中的项目

时间:2012-02-22 20:05:15

标签: android resources drawable

如何计算以“fr”开头的drawable文件夹中的项目数?

背景;我想创建一个随机函数来从drawables文件夹中选择一个随机图像。为了使其面向未来,我想将随机数发生器的最大值设置为可以选择的项目数。

1 个答案:

答案 0 :(得分:10)

与Android中的其他资源一样,drawable通过'R'类访问,该类只是包含静态整数字段的静态类的集合。除了使用反射之外,没有“得到所有可绘制名称”的方法(至少我不知道)。

您需要一个可绘制的ID列表来随机化。您可以使用反射自动填充此列表:

    import java.lang.reflect.Field;
    ...
    Field[] fields = R.drawable.class.getFields();
    List<Integer> drawables = new ArrayList<Integer>();
    for (Field field : fields) {
        // Take only those with name starting with "fr"
        if (field.getName().startsWith("fr")) {
            drawables.add(field.getInt(null));
        }
    }

通过这种方式,您可以获得您感兴趣的绘图ID列表。您可以在以后通常使用的地方使用这些ID,例如R.drawable.someResource