美文网首页
解决Banner与SwipeRefreshLayout滑动冲突

解决Banner与SwipeRefreshLayout滑动冲突

作者: zhengLH | 来源:发表于2018-01-23 15:58 被阅读0次

【链接】  Banner与SwipeRefreshLayout滑动冲突

【重点】 重写 SwipeRefreshLayout

【代码如下】

package com.messcat.zhonghangxin.view;

import android.content.Context;

import android.support.v4.widget.SwipeRefreshLayout;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.view.ViewConfiguration;

/**

* @Author Lee

* @Time 2018/1/17

* @Theme

*/

public class VpSwipeRefreshLayoutextends SwipeRefreshLayout {

private float startY;

    private float startX;

    // 记录viewPager是否拖拽的标记

    private boolean mIsVpDragger;

    private final int mTouchSlop;

    public VpSwipeRefreshLayout(Context context, AttributeSet attrs) {

super(context, attrs);

        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();

    }

@Override

    public boolean onInterceptTouchEvent(MotionEvent ev) {

int action = ev.getAction();

        switch (action) {

case MotionEvent.ACTION_DOWN:

// 记录手指按下的位置

                startY = ev.getY();

                startX = ev.getX();

                // 初始化标记

                mIsVpDragger =false;

break;

            case MotionEvent.ACTION_MOVE:

// 如果viewpager正在拖拽中,那么不拦截它的事件,直接return false;

                if(mIsVpDragger) {

return false;

                }

// 获取当前手指位置

                float endY = ev.getY();

                float endX = ev.getX();

                float distanceX = Math.abs(endX -startX);

                float distanceY = Math.abs(endY -startY);

                // 如果X轴位移大于Y轴位移,那么将事件交给viewPager处理。

                if(distanceX >mTouchSlop && distanceX > distanceY) {

mIsVpDragger =true;

return false;

                }

break;

            case MotionEvent.ACTION_UP:

case MotionEvent.ACTION_CANCEL:

// 初始化标记

                mIsVpDragger =false;

break;

        }

// 如果是Y轴位移大于X轴,事件交给swipeRefreshLayout处理。

        return super.onInterceptTouchEvent(ev);

    }

}

【法2】  https://www.jianshu.com/p/a169c36f8083

相关文章

网友评论

      本文标题:解决Banner与SwipeRefreshLayout滑动冲突

      本文链接:https://www.haomeiwen.com/subject/sdmioxtx.html