【问题标题】:Count items in drawable folder that start with specific string计算可绘制文件夹中以特定字符串开头的项目
【发布时间】:2012-02-22 20:05:15
【问题描述】:

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

背景;我想创建一个随机发生器来从 drawables 文件夹中选择一个随机图像。为了使其经得起未来考验,我想将随机化器的最大值设置为有资格挑选的项目数。

【问题讨论】:

    标签: android resources drawable


    【解决方案1】:

    与 Android 中的其他资源一样,可通过“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

    【讨论】:

    • 太棒了! field.get(i) 将获得 id,int i 可以随机化,field.size() 作为最大值。谢谢!!
    • Tomasz,多亏了你的回答,我才能写出play.google.com/store/apps/details?id=happyworx.nl.Applez。谢谢!
    • 这个答案是否仍然是最新的或在过去三年中出现了任何更好的方法?
    猜你喜欢
    • 1970-01-01
    • 2018-08-07
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多