android中,ViewFlipper+OnGestureListener可以实现左右滑动效果。
但是在ViewFlipper加上了ScrollView就悲剧了,左右滑动事件无效了……
这里其实只需要多实现一个方法就是了,主要是把事件交给系统自己处理
在OnGestureListener对象中,实现以下方法
Java代码:
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev){
- super.dispatchTouchEvent(ev);
- //productGestureDetector 是 GestureDetector对象
- return productGestureDetector.onTouchEvent(ev);
- }
另外,由于有了上下滑动和左右滑动的原因,在上下滑动的时候可能会不小心就触发了左右滑动,所以需要在加点东西
Java代码:
- private static final int FLING_MIN_DISTANCE = 100;
- private static final int FLING_MIN_VELOCITY = 50;
- //....
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
- float velocityY) {
- if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE
- && Math.abs(velocityX) > FLING_MIN_VELOCITY) {// move to left
- //TODO 左滑动
- } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE
- && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
- //TODO 右滑动
- } else {
- return false;
- }
- return true;
- }