2012-04-29 11 views
1

ロールオーバーの古い画像の後に3秒以内にImageViewに他の画像を表示したい。コード:ImageClock.sleep()の前にImageViewを更新できない理由

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

関連する問題