2012-09-26 10 views
6

私はViewFlipperを5秒ごとに自動フリップするように設定しました。詳細の一部を残して、それはこのようになりますと、正常に動作します:Android ViewFlipperをループから止めるには?

ViewFlipper flipper = (ViewFlipper) findViewById(R.id.myflipperid); 

flipper.setFlipInterval(5000);        
flipper.setInAnimation(inFromRightAnimation()); 
flipper.setOutAnimation(outToLeftAnimation()); 

flipper.startFlipping(); 

は、しかし、私は私が最後のビューで停止するオートフリップをしたい場合があります、というよりもやり直すために周りのループ。 ViewFlipperまたはそれが継承するクラスのいずれかがループ制御メソッドを持っていないようです。

最後にヒットしたときにViewFlipperが子ビューをループするのを止める方法を教えてください。

注:リストの最後にViewFlipperをキャッチする必要があるため、つまりユーザの入力に依存することなく、hereの回答は私のケースには当てはまりません。ありがとう。

答えて

6

私はこの自己を試していませんが、これが助けてくれることを願っています。

まず、あなたのビューフリッパのフリップイベントを聞いてみてください。 アニメーションを使用しているためです。 https://stackoverflow.com/a/3813179/1594522

次に、onAnimationEnd()を使用すると、viewflipperが最後の子ビューにあるかどうかを確認することができます。 既に最後の子ビューにある場合は、flipper.stopFlipping()を呼び出します。

希望に役立ちます! :)

+1

はい、これはまさに私が昨日行ったことです。あなたは答えを投稿することで私を打つので、私はあなたにチェックマークを与えるでしょう!私の実際の解決策は以下の通りです。 – gcl1

0

ジャストリストのサイズを取得した後、もし状態で、

flipper.stopFlipping() 

が、それはこのように動作ホープと言います。

8

ここに私が使った解決策があります。 hereが示唆するように、トリックはアニメーションイベントの終了をリッスンし、フリッパーが最後のビューにあるかどうかを確認することです。

flipper.getInAnimation().setAnimationListener(new Animation.AnimationListener() { 

    public void onAnimationStart(Animation animation) {} 
    public void onAnimationRepeat(Animation animation) {} 
    public void onAnimationEnd(Animation animation) { 

     int displayedChild = flipper.getDisplayedChild(); 
     int childCount = flipper.getChildCount(); 

     if (displayedChild == childCount - 1) { 
      flipper.stopFlipping(); 
     } 
    } 
}); 

ご回答ありがとうございます。

+0

あなたの例では "flipperWall"とは何ですか? –

+0

申し訳ありませんが、私は宣言を捨てました。この例では、flipperWallは次のようなビューフリッパーです。ViewFlipper flipperWall ;.また、XMLファイルから、findViewById()を使用して、またはプログラムによってそれを初期化する必要があります。がんばろう! – gcl1

+0

私は答えを編集しました。今、もっと意味があるかどうかを見てください。 –

関連する問題