首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ViewFlipper上滑动

在ViewFlipper上滑动
EN

Stack Overflow用户
提问于 2012-10-25 22:14:57
回答 2查看 6.7K关注 0票数 3

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

我使用下面的代码(对于每个滚动视图)来滑动:

代码语言:javascript
复制
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,Eric

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-25 22:43:23

你应该把你在MotionEvent.ACTION_MOVE中的代码移到MotionEvent.ACTION_UP上,这样就可以刷卡了。现在,如果你不想要swipe,并且想要随着手指移动屏幕,你应该像JafarKhQ刚才提到的那样实现ViewPager

票数 1
EN

Stack Overflow用户

发布于 2012-10-25 22:19:19

setOnTouchListener将调用multible time (当您滑动手指时),因此

代码语言:javascript
复制
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();

将被多次调用

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13070594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档