2011-09-24 231 views
1

如何從2中加載一個隨機圖像?android挑選隨機圖片?

我想這個代碼

final Random rgenerator = new Random(); 
Integer [] mImageIds = 
{ 
    R.drawable.mantrans, 
    R.drawable.womentrans, 
}; 
Integer q = mImageIds[rgenerator.nextInt(mImageIds.length)]; 
gBall1 = BitmapFactory.decodeResource(getResources(), q); 

,但它沒有工作...

請幫

+0

當你嘗試過什麼事?另外,你可以使用'int',這裏不需要使用'Integer'。 –

+0

大衛,當我嘗試它所做的一切是產生womentrans圖像 –

+0

我認爲你只是不幸運!再試幾次,似乎它應該工作。 – pents90

回答

0

這是這樣一個簡單的任務類型的太多了。但我沒有真正使用過Random類。這是一種替代方法。

ArrayList<Integer> ids = new ArrayList<Integer>(); 
ids.add(R.drawable.mantrans); 
ids.add(R.drawable.womentrans); 

Collections.shuffle(ids); 

gBall1 = BitmapFactory.decodeResource(getResources(), ids.get(0)); 

您可能需要增加更多一點的id爲獲得在2個選擇隨機似乎沒有太大的隨機喜歡提到pents90。

+0

嗨,我添加了3個更多的ids和它正在生產的是mantrans –

+0

我測試過這段代碼,它似乎工作正常。把這段代碼放在一個簡單的java程序中,並用整數填充它。並運行它幾次,它會給你不同的價值觀。必須在每次訪問該值之前調用Collections.shuffle,以便獲得一個隨機數。 – blessenm

1

這是對你有用..

/////*****Random numbers with out repetation*****////// 
    final int[] imageViews = { 
      R.id.imgview11, R.id.imgview12, R.id.imgview13 }; 

    final int[] images = { 
      R.drawable.i1, R.drawable.i2, R.drawable.i3 }; 

      Random rng = new Random(); 
      List<Integer> generated = new ArrayList<Integer>(maxNoOfImages);    
      for (int i = 0; i < maxNoOfImages; i++) {    
       while(true) { 
        Integer next = rng.nextInt(maxNoOfImages); 

        if (!generated.contains(next)) {       
         ImageView iv = (ImageView)findViewById(imageViews[i]);             
         iv.setImageResource(images[next]); 

          generated.add(next); 
          break; 
        } 
       } 
      }