ViewPager刷卡用2个手指 [英] ViewPager swipe with 2 fingers

查看:156
本文介绍了ViewPager刷卡用2个手指的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想实现一个ViewPager刷卡用两个手指。 我试图执行的ViewPager覆盖的onTouchEvent并通过该方法仅如果触摸由2个手指作出超类sublcass。 但有一个问题:刷卡动画还与1手指! 我想我必须重写一些其他的方法......

这是我ViewPager类:

 公共类MyViewPager扩展ViewPager {
公共MyViewPager(上下文的背景下){
    超(上下文);
}

公共MyViewPager(上下文的背景下,AttributeSet中的AttributeSet){
    超(背景下,AttributeSet中的);
}

@覆盖
公共布尔的onTouchEvent(MotionEvent EV){
    INT N = ev.getPointerCount(); //手指的数量
    如果(N == 2)
        返回super.onTouchEvent(EV);
    否则返回false;
}
}
 

解决方案

重写 onInterceptTouchEvent()应该做的伎俩。根据在<一个评价href="http://grep$c$c.com/file/repository.grep$c$c.com/java/ext/com.google.android/android/4.0.1_r1/android/support/v4/view/ViewPager.java#ViewPager.onInterceptTouchEvent%28android.view.MotionEvent%29"相对=nofollow> ViewPager 来源的,它的存在在那里作出决定是否滚动应该启动与否。

I would to implement a ViewPager swipe with two fingers. I tried to implement a sublcass of ViewPager overriding the onTouchEvent and passing the method to superclass only if the touch is made by 2 fingers. But there is a problem: the swipe animation also works with 1 finger! I think I have to override some other method...

This is my ViewPager class:

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

解决方案

Overriding onInterceptTouchEvent() should do the trick. According to the comments in the ViewPager sources, it's there where the decision is made whether scrolling should start or not.

这篇关于ViewPager刷卡用2个手指的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆