6

5秒ごとに自動フリップするようにViewFlipperを設定しています。詳細の一部を省くと、次のようになり、正常に機能します。

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

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

flipper.startFlipping();

ただし、ループして最初からやり直すのではなく、最後のビューで自動反転を停止したい場合があります。ViewFlipperまたはそれが継承するクラスのいずれにもループ制御メソッドがあるようには見えません。

ViewFlipperが最後のビューに到達したときに、子ビューのループを停止するにはどうすればよいですか?

注:ここで示した答えは私の場合には当てはまりません。リストの最後で、つまりユーザー入力に依存せずにViewFlipperをキャッチする必要があるためです。ありがとう。

4

3 に答える 3

9

これが私が使用した解決策です。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();
        }
    }
});

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

于 2012-09-27T11:51:46.420 に答える
6

私はこれを自分で試したことはありませんが、これが役立つことを願っています。

まず、viewflipper のフリップ イベントをリッスンしてみてください。アニメーションを使用しているため。ここに投稿されたソリューションを使用できます: https://stackoverflow.com/a/3813179/1594522

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

それが役立つことを願っています! :)

于 2012-09-27T08:00:19.610 に答える
0

リストのサイズを取得し、if条件で次のように言います。

flipper.stopFlipping()

それがこのように機能することを願っています。

于 2012-09-27T08:05:21.027 に答える