美文网首页
Android 解决SwipeRefreshLayout与Ban

Android 解决SwipeRefreshLayout与Ban

作者: mt大山 | 来源:发表于2018-12-03 17:31 被阅读0次

    新建VpSwipeRefreshLayout类继承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);
        }
    

    相关文章

      网友评论

          本文标题:Android 解决SwipeRefreshLayout与Ban

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