可绘制的参考

时间:2014-03-19 04:17:20

标签: android imageview drawable

我的应用程序中有很少的图像(它们都被复制到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。我感谢任何帮助

4 个答案:

答案 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文件夹中的资源生成的。 希望这有帮助