SwipeRefreshLayout嵌套ViewPager等产生的滑动冲突

当使用SwipeRefreshLayout的时候,如果内部嵌套了ViewPager等类似横向滑动的View,会产生滑动冲突,需要重写SwipeRefreshLayout.

private int mTouchSlop;
private float mPrevX;

public CustomSwipeToRefresh(Context context, AttributeSet attrs) {
    super(context, attrs);
   //判断用户在进行滑动操作的最小距离
    mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            mPrevX = MotionEvent.obtain(event).getX();
            break;

        case MotionEvent.ACTION_MOVE:
            final float eventX = event.getX();
            //获取水平移动距离
            float xDiff = Math.abs(eventX - mPrevX);
            //当水平移动距离大于滑动操作的最小距离的时候就认为进行了横向滑动
            //不进行事件拦截,并将这个事件交给子View处理
            if (xDiff > mTouchSlop) {
                return false;
            }
    }

    return super.onInterceptTouchEvent(event);
}
    原文作者:秋天的雨滴
    原文地址: https://www.jianshu.com/p/04d799608c2e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞