【问题标题】:ViewPager swipe with 2 fingersViewPager 用 2 根手指轻扫
【发布时间】:2014-05-22 12:17:31
【问题描述】:

我会用两根手指实现 ViewPager 滑动。 我试图实现 ViewPager 的子类,覆盖 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;
}
}

【问题讨论】:

    标签: android android-viewpager touch-event


    【解决方案1】:

    覆盖onInterceptTouchEvent() 应该可以解决问题。根据ViewPager sources 中的 cmets,决定是否开始滚动。

    【讨论】:

    • @SaravanaKumarChinnaraj 覆盖 onInterceptTouchEvent() 但有很多问题。其实我没能让它很好地工作,所以,当时我找到了另一种解决方案。
    • 那个解决方案是什么..? @fran
    • 我没有使用 ViewPager。
    • @SaravanaKumarChinnaraj eheh...还有其他因素让我找到了另一种解决方案:用两根手指滑动非常“用户不友好”
    【解决方案2】:

    我正在编写此代码,并且它适用于两个手指。

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 2017-09-11
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 2011-02-01
      相关资源
      最近更新 更多