如何在ImageView中设置运行时决定的图像?

时间:2016-08-23 14:33:45

标签: android image

我有一个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

4 个答案:

答案 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)

答案 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数组。所以你可以直接使用它们。

我已经编辑了你的功能。