我有一个ViewFlipper,其中有四个滚动视图,其中包含布局。
我使用以下代码(对于每个scrollview)进行滑动:
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, 埃里克
答案 0 :(得分:1)
setOnTouchListener会多次调用(当你滑动手指时),所以
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();
将多次调用
我建议您使用ViewPager代替ViewFlipper。
答案 1 :(得分:1)
您应该将MotionEvent.ACTION_MOVE
中的代码移至MotionEvent.ACTION_UP
进行滑动。现在,如果你不想滑动,并想要用手指移动屏幕,你应该像刚刚提到的JafarKhQ那样实现ViewPager
。