3

我有一个 ViewFlipper,其中有四个带有布局的滚动视图。

我使用以下代码(对于每个滚动视图)进行滑动:

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

您应该移动您拥有的代码MotionEvent.ACTION_MOVEMotionEvent.ACTION_UP进行滑动。现在,如果你不想滑动,并且想随着手指移动屏幕,你应该ViewPager像刚才提到的 JafarKhQ 那样实现。

于 2012-10-25T14:43:23.047 回答
1

setOnTouchListener 将调用多次时间(当你滑动手指时),所以

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

将多次调用

我建议您使用ViewPager而不是 ViewFlipper。

于 2012-10-25T14:19:19.117 回答