java—使用字符串作为值名并输入以查找文件

nkhmeac6  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(266)

要在画布上绘制,我需要从以下资源中获取图像文件:

bmpNode = BitmapFactory.decodeResource(getResources(), R.drawable.node);

之后,我可以调用我的画布来绘制:

c.drawBitmap(bmpNode, xPos, yPos, null);

问题是我有大量的唯一节点对象,id是一个字符串值。我把它们从“1”编号到“100”。每个节点在资源中都有自己的图像文件,也称为“1”-“100”。据我所知,我要做一百行代码才能得到每一张图片:

1 = BitmapFactory.decodeResource(getResources(), R.drawable.1);
2 = BitmapFactory.decodeResource(getResources(), R.drawable.2);
[...]
100 = BitmapFactory.decodeResource(getResources(), R.drawable.100);

现在,我不想为每个图像放置100行代码,而想做一个循环,witch的功能类似于以下代码:

for (int i=0; i<arrayNodes.length; i++){        //for every Node in the Array
    "i" = BitmapFactory.decodeResource(getResources(), R.drawable."i");
}

我试图研究反射和Map,但我对这种问题还不熟悉,无法应用我发现的任何东西。我也不知道如何正确地搜索这个问题,因为我不知道方法“r.drawable”的输入值是什么。

vsikbqxv

vsikbqxv1#

像这样拿身份证。

ArrayList<Bitmap> bitmapArrayList = new ArrayList<Bitmap>();
for (int i=0; i<arrayNodes.length; i++){
  bitmapArrayList.add(i, BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(String.valueOf(i), "drawable", package_name)));
}

检索位图:

bitmapArrayList.get(i);

如果没有这样的资源, getIdentifier() 将返回0。

相关问题