ViewPager用两根手指轻扫

时间:2014-05-22 12:17:32

标签: android android-viewpager ontouchevent

我想用两根手指实现ViewPager滑动。 我试图实现ViewPager的一个sublcass覆盖onTouchEvent,并且只有当用2个手指触摸时才将方法传递给超类。 但是有一个问题:滑动动画也适用于1个手指! 我想我必须覆盖其他一些方法...

这是我的ViewPager类:

public class MyViewPager extends ViewPager{
public MyViewPager(Context context) {
    super(context);
}

public MyViewPager(Context context,AttributeSet attributeSet) {
    super(context,attributeSet);
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
    int n = ev.getPointerCount(); //number of fingers
    if (n == 2)
        return super.onTouchEvent(ev);
    else return false;
}
}

2 个答案:

答案 0 :(得分:2)

覆盖onInterceptTouchEvent()应该可以解决问题。根据{{​​3}}中的评论,在那里决定是否应该开始滚动。

答案 1 :(得分:0)

即时编写此代码,并且它可以用于两根手指。

boolean freeTwo = false;

@Override
public boolean onTouchEvent(MotionEvent ev) {

    final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;
    int counter = ev.getPointerCount() ;

    if(counter == 1 && (action== MotionEvent.ACTION_DOWN || action== MotionEvent.ACTION_MOVE) && !freeTwo)
    {
        if(action == MotionEvent.ACTION_MOVE)
            freeTwo = true;
        return super.onTouchEvent(ev);
    }

    if(counter == 2 && (action== MotionEvent.ACTION_POINTER_DOWN|| action== MotionEvent.ACTION_MOVE || action== MotionEvent.ACTION_POINTER_UP) && freeTwo)
    {
        if(action== MotionEvent.ACTION_POINTER_UP)
            freeTwo = false;
        return super.onTouchEvent(ev);
    }

    ev.setAction(MotionEvent.ACTION_UP);
    return super.onTouchEvent(ev);
}