如何在XML TypedArray中存储drawable的int ID

时间:2011-07-11 00:58:58

标签: java android

我的目标是将某些drawable的所有int ID存储在TypedArray中,以便我可以按顺序访问ID。例如:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array
        name="bitmap_ids">
        <item>@drawable/icon1</item>
        <item>@drawable/icon2</item>
        <item>@drawable/icon3</item>
        <item>@drawable/icon4</item>
        <item>@drawable/icon5</item>
   </array>
</resources>

这不会产生我正在寻找的int结果,以便我以后可以执行以下操作:

TypedArray typedArray = mResources.obtainTypedArray(R.array.bitmapIds);
int[][] t = new int[width][height];
int index = 0;
for (int i = 0; i < width; i++)
    for (int j = 0; j < height; j++) {
        t[i][j] = typedArray.getInt(index, -1);
        index++;
    }

甚至更晚:

return BitmapFactory.decodeResource(mResources, t[x][y]);

这相当于:

return BitmapFactory.decodeResource(mResources, R.drawable.icon1);

任何提示或见解都将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:5)

我可能误解了你的问题,但这对我有用

for (int i = 0; i < width; i++) {
  for (int j = 0; j < height; j++) {
    t[i][j] = typedArray.getResourceId(index++, 0);
  }
}

TypedArray.getResourceId()似乎返回已解析的资源ID。使用类型化数组BitmapFactory.decodeResource(getResources(), t[0][0])中的@ drawable / name条目绘制正确的资源。