我有一个ImageView,我想根据随机值设置图像
我所知道的是我可以设置这样的图像
public void onRollClick(View view) {
String[] images={"dice1.png","dice2.png","dice3.png","dice4.png","dice5.png","dice6.png"};
int diceValue=new Random().nextInt(6);
ImageView diceImage= (ImageView) findViewById(R.id.imageView);
diceImage.setImageResource(R.drawable.dice5);
}
在onClick
点击时调用Button
方法。所有图像都在drawable
目录中。目前,我总是设置图片dice5.png
。我怎样才能设置images[diceValue]
图片?
注意:我使用的是API 22
答案 0 :(得分:4)
您只需存储资源的ID即可!
public void onRollClick(View view) {
int[] images= {R.drawable.dice1, R.drawable.dice2, R.drawable.dice3, R.drawable.dice4, R.drawable.dice5, R.drawable.dice6};
int diceValue=new Random().nextInt(6);
ImageView diceImage= (ImageView) findViewById(R.id.imageView);
diceImage.setImageResource(images[diceValue]);
}
答案 1 :(得分:1)
我只是建议立即使用像Picasso这样的图像加载库。这使得性能更好,并且实现起来非常简单。您可以在此处获取图书馆:http://square.github.io/picasso/这将是您的代码:
public void onRollClick(View view) {
int[] images= {R.drawable.dice1, R.drawable.dice2, R.drawable.dice3, R.drawable.dice4, R.drawable.dice5, R.drawable.dice6};
int diceValue=new Random().nextInt(6);
ImageView diceImage= (ImageView) findViewById(R.id.imageView);
Picasso.with(this).load(images[diceValue]).into(diceImage);
}
编辑:你绝对应该提高你的API版本;)
答案 2 :(得分:0)
您可以使用getResources().getIdentifier()
从资源名称获取get和id。
这里有更多信息java android getResources().getIdentifier()和https://developer.android.com/reference/android/content/res/Resources.html#getIdentifier(java.lang.String,%20java.lang.String,%20java.lang.String)
答案 3 :(得分:0)
public void onRollClick(View view) {
int[] images={R.drawable.dice1,R.drawable.dice2,R.drawable.dice3,R.drawable.dice4,R.drawable.dice5,R.drawable.dice6};
int diceValue=new Random().nextInt(6);
ImageView diceImage= (ImageView) findViewById(R.id.imageView);
diceImage.setImageResource(images[diceValue]);
}
而不是字符串数组创建int drawables数组。所以你可以直接使用它们。
我已经编辑了你的功能。