0

スワイプで月を切り替えるときにAndroidカレンダーのように機能するViewFlipperの作成に関するヘルプを探しています。

viewFlipper 内にビューを 2 つだけ配置したいのですが、右にスワイプするとやりたいのです

mViewFlipper.setDisplayedChild( 1 );

左にスワイプすると:

mViewFlipper.setDisplayedChild( 0 );

左に2回スワイプすると、毎回完全なイン/アウトアニメーションが表示され、右スワイプでも同じになります。完全なアニメーションは、次と前にスワイプしたときにのみ機能し、次の方向には決して機能しません -> 次。

手伝ってくれてありがとう!

4

3 に答える 3

1

2 つのビューのみを使用していて、現在 0 と 1 を手動で設定している場合は、単に呼び出します

mViewFlipper.showNext();

代わりに、スワイプの方向に関係なく、左または右にスライドするかどうかに応じて、正しいアニメーションを適用します。これは、ビュー 1 にいて、(定義したように) もう一度右にスライドした場合でも、2 つのビューの間で終わりのないフリッパーのように、ビュー 0 が戻ってくることを意味します。

http://developer.android.com/reference/android/view/animation/AnimationUtils.html

私はあなたの質問を完全に誤解しているかもしれませんが、それはかなり曖昧です。

于 2013-08-30T13:33:41.307 に答える
1

このリンクを参照してください。

http://www.1mobile.com/effective-navigation-863044.html

http://developer.android.com/training/implementing-navigation/index.html

于 2013-08-30T13:36:54.973 に答える
0

** res = アニメーターのフォルダー.......

変換アニメーション xml ファイル = s_in_fleft は res フォルダー内の animator フォルダーにあります..... 役立つかもしれません**

public boolean onTouchEvent(MotionEvent touchevent) {
    switch (touchevent.getAction()) {
    case MotionEvent.ACTION_DOWN: {
        lastX = touchevent.getX();
        break;
    }
    case MotionEvent.ACTION_UP: {
        float currentX = touchevent.getX();

        if (lastX < currentX) {
            if (viewFlipper.getDisplayedChild() == 0)
                break;

            viewFlipper.setInAnimation(this, R.animator.s_in_fleft);
            viewFlipper.setOutAnimation(this, R.animator.s_out_right);
            viewFlipper.showNext();
        }

        if (lastX > currentX) {
            if (viewFlipper.getDisplayedChild() == 1)
                break;

            viewFlipper.setInAnimation(this, R.animator.s_in_fright);
            viewFlipper.setOutAnimation(this, R.animator.s_out_left);
            viewFlipper.showPrevious();
        }
        break;
    }
    }
    return false;
}
于 2013-11-09T17:30:42.197 に答える