0
     ImageView image = (ImageView) findViewById(R.id.imageview);

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

画像を少し変更しようとしています。上記のコードは機能しませんが、理由がわかりません。スレッドを使用する必要がありますか?または誰かがより良いアイデアを持っていますか?

編集問題を明確にするには:

「drawable.image2」として表示されている画像「drawable.image1」を1秒間表示してから、「drawable.image2」に変更します。

EDIT2:

このコードはonClickで使用されます。ユーザーが画像をクリックすると、1秒間変更する必要があります

4

5 に答える 5

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);
            }
        } ); 
    }
}
于 2012-04-04T15:53:02.160 に答える
0
Thread.sleep(1000);

それをする必要があります。より良い方法もありますが。

于 2012-04-04T15:48:47.950 に答える
0

デバッグモードを使用し、への呼び出しごとにブレークポイントを設定しますsetImageResource。ステップスルーして、それぞれが呼び出されているかどうかを確認し、画像が適切に変更されているかどうかを確認します。

実際のケースでは、ユーザーの操作に基づいて画像を変更したり、スレッドの処理中にアイコンを変更したり、完了時にアイコンを変更したりすることができます。この例については、をチェックしてくださいAsyncTask

于 2012-04-04T15:49:22.757 に答える
0

R.drawable.image1の代わりに使用drawable.image1

于 2012-04-04T15:49:48.360 に答える
0

onCreate()メソッドで「切り替え」を実行しているように見えます。sleepこの段階では実際にはページに何も書き込まれていないため、アクティビティの読み込みが遅くなる可能性があります。

画像を変更するには、UIスレッドで切り替えを実行する必要があります。また、画像を膨らませてページに追加した後で切り替える必要があります。

「onClick」イベントにこのコードを追加してみてください。

于 2012-04-04T15:51:16.923 に答える