java - 使用字符串作为值名称和输入来查找文件

标签 java android canvas

要在 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() 将返回 0

关于java - 使用字符串作为值名称和输入来查找文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27964545/

相关文章:

java - 在 android 中设置 TextView 的可见性不起作用

javascript - HTML5 Canvas : Move directly to point

javascript - 交互式弹线Canvas框架?

java - 类中的方法不能应用于给定类型

android - 消息等级构建显示错误

android - 如何在android中卸载应用程序时删除共享首选项

java - 如何在 Netbeans 中使用 Canvas/JCanvas

java - 使用eclipse调试maven项目

java - 如何避免数据竞争——两个例子

java - 带有 ResponseListener 的 AsyncTask