2012-04-04 51 views
0
 ImageView image = (ImageView) findViewById(R.id.imageview); 

    image.setImageResource(drawable.image1); 
    SystemClock.sleep(1000); 
    image.setImageResource(drawable.image2); 

我想改變圖像一秒,我上面的代碼不起作用,但不知道爲什麼? 我應該使用線程嗎?或者有沒有人有更好的想法?更改圖像一秒

EDIT 爲了澄清的問題:

的圖像被顯示爲「drawable.image2」 我想「drawable.image1」中顯示一秒鐘然後改變爲「drawable.image2」。

EDIT2:

此代碼用於onClick。當用戶點擊圖片時需要更改一秒

+0

'不工作'...什麼是不工作?它怎麼不起作用? – talnicolas 2012-04-04 15:47:48

回答

1

我推薦使用TimerTask,並使用Timer。你可以這樣設置:

protected void showDelayedImages() { 

    mImageView.setImageResource(resId1); 

    Timer timer = new Timer(); 
    timer.schedule(new MyTimerTask(), 1000); 
} 

private class MyTimerTask extends TimerTask { 
    @Override 
    public void run() { 

     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 

       mImageView.setImageResource(resId2); 
      } 
     }); 
    } 
} 
+0

完美地工作,謝謝。 – 2012-04-04 16:01:04

0
Thread.sleep(1000); 

應該這樣做。雖然也有更好的方法。

+0

相同的功能。 – Graeme 2012-04-04 15:51:41

+0

剛剛試過但仍然沒有變化 – 2012-04-04 15:52:46

0

使用調試模式並將每個調用的斷點設置爲setImageResource。逐步查看是否每個人都被調用以查看您的圖像是否正確更改。

在現實世界的情況下,您可能想要基於某些用戶操作更改圖像,或者例如在線程正在處理時更改圖標,然後在完成時更改它。在這個例子中,檢出AsyncTask。的drawable.image1

0

使用R.drawable.image1相反,sleep可能只是讓你的活動負載慢,因爲在這個階段,沒有實際寫入頁面的任何內容。

爲了讓您的圖像更改,您需要在UI線程上執行切換,並且您需要在圖像被充滿並添加到頁面後執行切換。

嘗試在「onClick」事件中添加此代碼。

+0

如果'drawable'直接作爲導入引用,這不會是一個問題。 – Graeme 2012-04-04 15:52:03

0

它看起來就像你在onCreate()方法執行「開關」