使用字符串作为值名称和输入来查找文件
Using String as value name and input to find File
要在 canvas 上绘图,我需要从这样的资源中获取图像文件:
bmpNode = BitmapFactory.decodeResource(getResources(), R.drawable.node);
之后我可以打电话给我的 canvas 画画:
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 行代码,我想创建一个循环, 的功能类似于以下代码:
for (int i=0; i<arrayNodes.length; i++){ //for every Node in the Array
"i" = BitmapFactory.decodeResource(getResources(), R.drawable."i");
}
我试图研究反射和贴图,但我对这类问题不熟悉,无法应用我发现的任何东西。我也不知道如何正确搜索这个问题,因为我不知道调用方法 "R.drawable" 的输入值是什么。
这样获取id。
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()
将 return 0.
要在 canvas 上绘图,我需要从这样的资源中获取图像文件:
bmpNode = BitmapFactory.decodeResource(getResources(), R.drawable.node);
之后我可以打电话给我的 canvas 画画:
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 行代码,我想创建一个循环, 的功能类似于以下代码:
for (int i=0; i<arrayNodes.length; i++){ //for every Node in the Array
"i" = BitmapFactory.decodeResource(getResources(), R.drawable."i");
}
我试图研究反射和贴图,但我对这类问题不熟悉,无法应用我发现的任何东西。我也不知道如何正确搜索这个问题,因为我不知道调用方法 "R.drawable" 的输入值是什么。
这样获取id。
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()
将 return 0.