1

古い画像をロールオーバーした後、3秒以内に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);

しかし、うまくいきませんか?それで、私は何か間違ったことをしていますか?

4

1 に答える 1

3

UIスレッドをブロックしています。したがって、sleepコマンドの間、画面は更新されません。必要なのは、画像リソースを変更する関数への非ブロッキング遅延呼び出しをスケジュールすることです。これはそのようなことをする修正されたコードです:

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);
于 2012-04-29T01:21:57.690 に答える