2011-05-02 154 views
1

我想用隨機圖像製作視圖。我有代碼,沒有錯誤,但當我點擊按鈕去隨機圖像,它只是保持不變。Android中的隨機圖像?

我的來源是:

private static final Random rgenerator = new Random(); 

private static final Integer[] mImageIds = 
    { R.drawable.img2, R.drawable.img1, R.drawable.img3, }; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Integer q = mImageIds[rgenerator.nextInt(mImageIds.length)]; 
    ImageView iv = (ImageView) findViewById(R.id.imageviewyeah); 
    iv.setTag(q); 

    View nextButton = findViewById(R.id.next_image_button); 
    nextButton.setOnClickListener(this); 
} 

public void onClick(View v) 
{ 
    switch (v.getId()) 
    { 
     case R.id.next_image_button: 
      Intent i = new Intent(this, RandomImage.class); 
      startActivity(i); 
      break; 
    } 
} 

回答

1

參考只要保持你的ImageView並調用setImageResource(int id)與隨機的資源之一。你並不需要啓動一個新的Activity檢索隨機資源ID ...

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Integer q = mImageIds[rgenerator.nextInt(mImageIds.length)]; 
    final ImageView iv = (ImageView) findViewById(R.id.imageviewyeah); 

    View nextButton = findViewById(R.id.next_image_button); 
    nextButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View V) { 
       int resource = mImageIds[rgenerator.nextInt(mImageIds.length)]; 
       iv.setImageResource(resource); 
     } 
    }); 
} 
+0

對不起,我不擅長這個。我能舉個例子嗎? – Christian 2011-05-02 19:26:07

+0

已編輯。這就是你需要的。更正:您需要閱讀更多關於您試圖編程的平臺。 – LeffelMania 2011-05-02 19:29:55

+0

謝謝偉大的作品。 – Christian 2011-05-02 19:32:26

0

我會改變一些事情。

private static final Random rgenerator = new Random(); 
private ImageView iv; 

private static final Integer[] mImageIds = 
    { R.drawable.img2, R.drawable.img1, R.drawable.img3, }; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Integer q = mImageIds[rgenerator.nextInt(mImageIds.length)]; 
    iv = (ImageView) findViewById(R.id.imageviewyeah); 
    changeImageResource(); 

    View nextButton = findViewById(R.id.next_image_button); 
    nextButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      changeImageResource(); 
     } 
    }); 
} 

public void changeImageResource() 
{ 
    int i = regeneratos.nextInt(3); 
    iv.setImageResource(mImageIds[i]); 
} 

希望這會有所幫助。

+0

您是否真的希望這有助於任何不僅僅是複製粘貼和運行代碼的人?一個簡短的描述或一些意見可以幫助,代碼部分應該是概念的解釋/證明。 – rekaszeru 2011-05-02 19:41:10

+0

你說得對,我很抱歉,那是早上3點我寫的。我正在做的是通過運行一種新的方法來改變按鈕的onClick方法中的圖像,該方法將圖像改變爲隨機圖像。沒有必要爲此使用意圖。 – 2011-05-03 15:36:08