2015-09-07 39 views
1

我想隨機將從數據庫(代碼仍然不加)帶來的背面的圖像,但我寫的代碼是行不通的。我原本剛剛添加了翻轉功能。我搜索瞭如何隨機化圖像並試圖遵循給定的代碼。可悲的是它不適合我。在你的代碼如何隨機化android studio中的圖像?我寫的代碼是不工作

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // get references to the imageView objects 
    imgUpperLeft = (ImageView) findViewById(R.id.imgUpperLeft); 
    imgUpperRight = (ImageView) findViewById(R.id.imageView2); 
    imgLowerLeft = (ImageView) findViewById(R.id.imageView3); 
    imgLowerRight = (ImageView) findViewById(R.id.imageView4); 

    // Setting the initial image (First face of cards) 
    imgUpperLeft.setImageResource(R.drawable.img_waterfall); 
    imgUpperRight.setImageResource(R.drawable.img_waterfall); 
    imgLowerLeft.setImageResource(R.drawable.img_waterfall); 
    imgLowerRight.setImageResource(R.drawable.img_waterfall); 

    imgUpperLeft.setVisibility(View.VISIBLE); 
    imgUpperRight.setVisibility(View.VISIBLE); 
    imgLowerLeft.setVisibility(View.VISIBLE); 
    imgLowerRight.setVisibility(View.VISIBLE); 


} 


ImageView imgView = new ImageView(this); 
Random rand = new Random(); 
int rndInt = rand.nextInt(4) + 1; // n = the number of images, that start at idx 1 
String imgName = "img" + rndInt; 
int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 

// Shows the second face of the cards 

public void showUpperLeftImage(View v){ 
    imgView.setImageResource(id); 
} 
public void showUpperRightImage(View v){ 
    imgView.setImageResource(id); 
} 
public void showLowerLeftImage(View v){ 

    imgView.setImageResource(id); 
} 
public void showLowerRightImage(View v){ 
    imgView.setImageResource(id); 
} 
+0

所以,你想從隨機給它一個int加上'ImageView'? –

+0

這就是我想要做的,但是如果有另一種方式,我也可以接受。 – Ning

回答

0

兩件事情站出來對我說:

ImageView imgView = new ImageView(this); 

這ImageView的不是該視圖層次結構的一部分,這意味着它是不是在屏幕上。它曾經打算在屏幕上?如果沒有,那麼我認爲你不需要這個。

public void showUpperLeftImage(View v){ 
    imgView.setImageResource(id); 
} 

有四種方法可以改變不在屏幕上的視圖圖像。從他們的方法名稱來看,我認爲你想改變之前用findViewById()發現的四個ImageView的圖像。

我想你想這樣做:

public void showUpperLeftImage(int id) { 
    imgUpperLeft.setImageResource(id); 
} 
public void showUpperRightImage(int id) { 
    imgUpperRight.setImageResource(id); 
} 
public void showLowerLeftImage(int id) { 
    imgLowerLeft.setImageResource(id); 
} 
public void showLowerRightImage(int id) { 
    imgLowerRight.setImageResource(id); 
}