3

私はViewFlipperを持っていて、その中にレイアウトのある4つのスクロールビューがあります。

次のコード(スクロールビューごと)を使用してスワイプします。

ScrollView View1 = (ScrollView) findViewById(R.id.View1);
    View1.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub

            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                FirstX = (int) event.getX();
            }

            if (event.getAction() == MotionEvent.ACTION_MOVE) {
                int LastX = (int) event.getX();

                if (FirstX - LastX > SWIPE_MIN_DISTANCE) {
                    viewFlipper.setInAnimation(slideLeftIn);
                    viewFlipper.setOutAnimation(slideLeftOut);
                    viewFlipper.showNext();
                } else if (LastX - FirstX > SWIPE_MIN_DISTANCE) {
                    viewFlipper.setInAnimation(slideRightIn);
                    viewFlipper.setOutAnimation(slideRightOut);
                    viewFlipper.showPrevious();
                }
            }

            return true;
        }
    });

動作しますが、ビュー1からビュー2にスワイプすると、ビュー2とビュー3が混在して表示され、最終的にビュー4が表示されます。

したがって、各ビューのOnTouchListenersは相互に呼び出されているようです。どうすればこれを防ぐことができますか?

短くて速いスワイプは、本来の機能を果たします。

rg、エリック

4

2 に答える 2

1

setOnTouchListenerは(指をスライドさせている間)マルチブルタイムを呼び出すため、

viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();

複数回呼び出されます

ViewFlipperの代わりにViewPagerを使用することをお勧めします。

于 2012-10-25T14:19:19.117 に答える
1

スワイプするにMotionEvent.ACTION_MOVEは、コードを移動する必要があります。MotionEvent.ACTION_UPここで、スワイプしたくなく、指と一緒に画面を移動したい場合は、ViewPager先ほど述べたJafarKhQのように実装する必要があります。

于 2012-10-25T14:43:23.047 に答える