我有一个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,Eric
发布于 2012-10-25 22:43:23
你应该把你在MotionEvent.ACTION_MOVE中的代码移到MotionEvent.ACTION_UP上,这样就可以刷卡了。现在,如果你不想要swipe,并且想要随着手指移动屏幕,你应该像JafarKhQ刚才提到的那样实现ViewPager。
发布于 2012-10-25 22:19:19
setOnTouchListener将调用multible time (当您滑动手指时),因此
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();将被多次调用
我建议您使用ViewPager而不是ViewFlipper。
https://stackoverflow.com/questions/13070594
复制相似问题