2012-04-29 32 views
1

我想在3秒內在ImageView中顯示其他圖像,在此之後滾動舊圖像。代碼:爲什麼ImageView無法在SystemClock.sleep之前更新()

OnClickListener oc = new OnClickListener() { 
@Override 
public void onClick(View v) { 
     ImageView iv = (ImageView)v; 
     iv.setImageResource(img2_id); 
     SystemClock.sleep(3000); 
     iv.setImageResource(img1_id); 
    } 
    } 

    myImageView.setOnClickListener(oc); 

但它不起作用?那麼,我做錯了什麼?

回答

3

您正在阻止UI線程。因此在睡眠命令期間,屏幕不會刷新。你需要的是安排一個非阻塞延遲調用一個函數來改變圖像資源。這是一個修改後的代碼,可以做這樣的事情:

Handler mHandler = new Handler(); /*handler declared in your Activity thread, I assume*/ 

OnClickListener oc = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     ImageView iv = (ImageView)v; 
     iv.setImageResource(img2_id); 

     mHandler.postDelayed(new Runnable(){ 
      public void Run(){ 
       iv.setImageResource(img1_id); 
      } 
     },3000); 

    } 
} 
myImageView.setOnClickListener(oc); 
+0

它的工作,謝謝你! – giangdn 2012-04-29 17:17:14

相關問題