1

imageViewがあり、次のように機能させたいです。

ImageViewerが表示されます

5秒間休止

見えない画像ビュー

5秒間休止

ImageViewerが表示されます

等々 ...

それ、どうやったら出来るの?スリープを試しましたが、プログラム全体が5秒でフリーズします。imageViewに影響を与えたいだけです。

4

2 に答える 2

2

でAlphaAnimationを使用ImageViewし、10 秒間でアルファ 100 から 0 になり、再び 100 に戻ります。次に、 INFINITEの繰り返し回数を使用します。ImageViewインターポレーターを使用すると、が表示または非表示になるときに非常に快適な効果を生み出すことができます。

于 2010-09-20T03:31:17.667 に答える
2

私は Android プログラマーではありませんが、一般的なアドバイスとして、別のスレッドでスリープ、つまり待機を実行し、待機期間の終わりにメイン スレッドでメソッドを実行する必要があると思います。イメージビューの可視性を切り替えます。

より具体的な詳細に入ると、別のスレッドにいる間はほとんどの UI オブジェクトを更新できないため、Handler オブジェクトを使用する必要があると言えます。メッセージを Handler に送信すると、メッセージはキューに保存され、UI スレッドによってできるだけ早く実行されます。

public class MyActivity extends Activity {

// Handler needed for callbacks to the UI thread
final Handler mHandler = new Handler();

// Create runnable for posting
final Runnable mUpdateUIState = new Runnable() {
    public void run() {
        updateUIState();
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    [ . . . ]
}

protected void startToggle() {

    // Fire off a thread to do the waiting
    Thread t = new Thread() {
        public void run() {
            Thread.Sleep(5000);
            mHandler.post(mUpdateUIState);
        }
    };
    t.start();
}

private void updateUiState() {

    // Back in the UI thread -- toggle imageview's visibility
    imageview.setVisibility(1 - imageview.getVisibility());
}
}

または、短いバージョンのスニペット、

Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
         public void run() { 
              imageview.setVisibility(1 - imageview.getVisibility());
         } 
    }, 5000); 

postDelayedメッセージ投稿ロジック内に遅延を組み込むメソッドを使用します。

于 2010-09-19T09:15:58.273 に答える