2016-08-23 116 views
2

我有,我想設置取決於隨機值圖像的ImageView的如何在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

您可以簡單地存儲您的資源的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]); 
} 
0
+1

在這種情況下,獲得資源的名稱不一個合適的解決方案,@ pdegand59的答案更容易。 – sagix

+0

@sagix爲什麼它不適合?解決方案可以是'diceImage.setImageResource(getResources()。getIdentifier(getimages [diceValue],「drawable」,getPackageName());' –

+0

這是比資源ID列表更復雜的解決方案。 – sagix

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可繪的陣列。所以你可以直接使用它們。

我編輯了你的函數。

1

我只是建議馬上使用像畢加索這樣的圖像加載庫。這使得性能變得更好,並且實現起來非常簡單。你可以在這裏的庫: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版本;)

相關問題