1

我目前正在做Android开发。

R 类(一个自动生成的类)有很多“全局”值,可以从任何地方访问,如下所示:

R.drawable.<file_name_ignoring_suffix>

我有很多名为“item_0.png”、“item_1.png”、“item_2.png”等的文件。

有没有一种简单的方法可以在不先将它们放入数组的情况下遍历这些项目?

我目前的实现:

int[] itemResources = { R.drawable.item_0, R.drawable.item_1, R.drawable.item_2,
                        R.drawable.item_3, R.drawable.item_4, R.drawable.item_5  };

...然后遍历数组。

这很好用,但它不是特别可维护,并且当我有很多项目时会变得很费力。

有任何想法吗?

4

3 回答 3

2

您当然可以使用反射来获取R.drawable. 这有点hacky,但它可能对你有用。

于 2012-07-10T02:01:41.113 回答
1

我认为,没有简单的方法可以做到这一点。这是我试图获取可绘制对象的小代码。

    R.drawable d = new R.drawable();
    try {
        for (Field fld : declaredFields) {
            Integer id = fld.getInt(d);
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), id);
            if (bitmap != null)
                Log.d("tag", "success");
            else
                Log.d("tag", "failed");
        }
    } catch (Exception e) {
        Log.d("tag", "" + e);
    }

在上述测试中,其中一些失败了。我不知道原因,因为它需要进一步调查。但是,这将让你开始。

其次,如果您想使用 android 平台用于根据方向、区域设置等查找合适资源的规则来选择正确的 png ,也可以从 theme 中查找此 api 。

于 2012-07-10T02:06:31.670 回答
0

将它们放在同一个目录中,然后自动查询目录内容并让它使用内容创建一个数组怎么样?

于 2012-07-10T01:54:04.110 回答