动态图片源Android

3

我正在尝试在我的Android应用程序中使图像动态化。在其他文章的帮助下,我编写了以下代码,但我无法设置图像资源。这是我的代码:

// get image whose source i want to change..
ImageView IV = (ImageView) findViewById(R.id.imageView1);

// x for 1,2,3.. hangman1.png,hangman2.png and so on image are located
// under res/drawable-mdpi
int j = getResources().getIdentifier("hangman"+x, "imageView", getPackageName());

// here i get errork, The method setImageResource(int) in the type ImageView 
// is not applicable for the arguments (Drawable)
IV.setImageResource( getResources().getDrawable(j) );
4个回答

13
int j = getResources().getIdentifier("hangman"+x, "drawable", getPackageName());

如果你想获取一个可绘制对象,可以尝试这个方法。如kcoppock所说,只需要使用j即可。


2
是的,您需要指定资源的类型。就像在 R.drawable.hangman1 中:类型是 drawable 而不是 imageView - Peterdk

4
因为您试图传递一个Drawable对象。getDrawable()正如它的名字所示,返回一个Drawable对象。setImageResource需要一个资源ID,这是getIdentifier将返回的内容。您应该只将j传递给setImageResource()。
编辑:嘿,您还应该使用Yashwanth的答案,就像他说的那样。:)
(团队合作!)

我已经尝试了IV.setImageResource(j);错误消失了,但图片没有改变.. :( - mysterious

2
将上述两种解决方案结合起来对我很管用。以下是代码: 我不知道应该接受哪个答案...
ImageView IV = (ImageView) findViewById(R.id.imageView1);
int j = getResources().getIdentifier("hangman"+x, "drawable", getPackageName());
IV.setImageResource( j );

1
他还比我快了16秒。 - Kevin Coppock
+1 持续了 16 秒...哈哈...好的,我会接受他的答案...谢谢 :) - mysterious

0
从您的XML文件中,使用app:src而不是android:background,并从活动文件中使用:
setImageDrawable(getRessource().getDrawable(R.drawable.yourRessource));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接