georgeyang1024 / DoubleScroll

android Custom View,Slidable view scroll in scrollView
57 stars 6 forks source link

滑动冲突 #2

Closed Xiaocai9527 closed 7 years ago

Xiaocai9527 commented 8 years ago

昨天您只是解决了部分问题,还是有滑动问题,比如viewpager的左右滑动和scrollview的上下滑动,recyclerView的问题貌似并没有解决,我今天测试了下发现要重写onInterceptTouchEvent方法。 `public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: mFirstY = ev.getY(); mFirstX = ev.getX(); break; case MotionEvent.ACTION_MOVE: float mCurrentY = ev.getY(); float mCurrentX = ev.getX();

            float detalX = mCurrentX - mFirstX;
            float detalY = mCurrentY - mFirstY;
            boolean isDown = mCurrentY > mFirstY;//下拉
            boolean isUp = mCurrentY < mFirstY;//上滑
            if (Math.abs(detalY) > Math.abs(detalX)) {
                //解决viewpager的左右滑动和scrollview的上下滑动的冲突
                if (getScrollY() < maxMoveY) {
                    //若头布局还有那么全部竖直滑动事件SC拦截
                    return true;
                } else {
                    //若头布局已经隐藏
                    if (isDown) {
                        //下拉
                        if (ViewUtil.isScrollToTop(scrollableView)) {
                            //如果recyclerView滑到顶端了,那么SC拦截
                            return true;
                        } else {//如果recyclerView没有滑到顶端,那么SC不拦截
                            return false;
                        }
                    } else {//上滑,头布局隐藏的情况下上滑,SC不拦截
                        return false;
                    }
                }
            }
        case MotionEvent.ACTION_UP:
            break;
    }
    return super.onInterceptTouchEvent(ev);
}`
georgeyang1024 commented 8 years ago

已参考你的提议进行修改。

georgeyang1024 commented 8 years ago

你可以fork,然后提交代码上来。

Xiaocai9527 commented 8 years ago

擦,咋上传代码啊,。 image 这个延迟加载在实际项目里可能会有点问题吧,搞个回调,在fragment的数据加载完毕再给viewpager设置高度。不过我不明白的是,为什么只需要给position=0的页面设置高度就可以了呢?按理说每一个页面的viewpager高度都不一样,都需要设置啊