我想用两根手指实现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;
}
}
答案 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);
}