我的应用程序中有很少的图像(它们都被复制到res / drawable并具有适当的R.drawable引用),我想使用字符串类型变量的内容将它们分配给我的ImageViews。为了说明,我有一个名为" c4.png"的图像文件。在我的drawable文件夹和包含" c4"的字符串变量(卡片)中。我想知道是否有任何方法可以使用这样的代码(ImageView1.setImageResource(R.drawable.card))将图像c4分配给我的ImageView1而不是使用ImageView1.setImageResource(R.drawable.c4)。基本上,我想知道是否可以用R.drawable.resourceName中的特定图像名称替换变量。我知道R.drawable.resourceName是一个整数,我不是想改变它的类型。我想用一个变量替换resourceName。我感谢任何帮助
答案 0 :(得分:1)
用它来绘制特定范围内的随机数 -
int min = 0;
int max = 9;
Random r = new Random();
int i1 = r.nextInt(max - min + 1) + min;
然后使用图像数组中的这个数字选择图像 -
public Integer[] nImages = {
R.drawable.c1, R.drawable.c2,
R.drawable.c3, R.drawable.c4,
R.drawable.c5, R.drawable.c6,
R.drawable.c7, R.drawable.c8,
R.drawable.c9, R.drawable.c10
};
ImageView1.setBackgroundResource(nImages [i1]);
希望这有效。
答案 1 :(得分:1)
试试这个
Resources res = getResources();
int id = res.getIdentifier(card, "drawable", getPackageName());
img.setImageResource(id);
这可能会解决您的问题。
答案 2 :(得分:1)
或者您可以将图像放在资产文件夹中。资产由其文件名引用,如
getAssets().open(<filename>);
这将返回一个InputStream。之后将它们转换为Bitmap资源是微不足道的
BitmapFactory.decodeStream(inputStream);
然后将该位图用于ImageView。这应该是直截了当的
imageView.setImageBitmap(bitmap);
答案 3 :(得分:0)
我想用变量替换resourceName。
不是将变量卡声明为字符串,而是将其声明为整数。所以你可以像下面那样使用它。
int card=R.drawable.c4;
ImageView1.setImageResource(card);
您可能无法执行类似R.drawable.card的操作,因为R文件是根据drawable文件夹中的资源生成的。 希望这有帮助