0

2 つの ImageView を持つ ViewFlipper があります。2 番目の ImageView を 2 秒間表示してから、ViewFlipper を非表示にしたいと思います。

次のようなコード:

// ...
// flipper is a ViewFlipper with two ImageViews
flipper.setOnClickListener(
  new View.OnClickListener() {
    public void onClick(View v) {
      flipper.showNext();
      // need to sleep for two seconds (e.g. Thread.sleep(2000)) after ImageView 
      // is displayed and then call flipper.setVisibility(View.INVISIBLE);
    }    
  }
);

2 番目の ImageView が描画されたことを検出するにはどうすればよいですか? 次に、コードを実行して、2 秒間スリープした後に ImageView を非表示に設定できます。

ありがとう

4

1 に答える 1

0

これを行う簡単な方法は次のとおりです。

  1. ViewAnimator自分でアニメーションを設定していない場合は、取得してください

  2. 「アウト」アニメーションにアニメーション リスナーを設定します。

  3. このアニメーションのonAnimationEnd(Animation animation)では、ビューから可視性を削除しますsetVisibility(View.GONE)。厳密に言えば、アニメーションが終了した後に可視性を終了する必要があり、新しいウィンドウが表示された後の最初の瞬間には、 を使用してアクセスできますmyFlipper.post(Runnable...)ただし、あなたの場合は、遅らせたいので、 を使用できますpostDelayed(Runnable..., long delay)

最初のフリップの直後に可視性を削除したいので、これは機能します。n回のフリップ後にこれを行いたい。次に、ビュー トラバーサル機能 (getChildなど) を使用して、現在どの子が「ビュー」にあるかに関するカウンターを維持する必要があります。幸いなことに、このコードの多くは基本クラスで記述されています。これを簡単に実装する方法を確認できるように、こちらのソース コードを熟読することをお勧めします。

于 2013-06-26T16:06:35.773 に答える