ScrollView和VerticalViewPager的滑动冲突
这是借鉴网上大神重写的scrollview
public class MyScrollView extends ScrollView {
public MyScrollView(Context context) {
super(context);
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private int downY = 0;//初始化按下时Y坐标变量
@Override
public boolean onTouchEvent(MotionEvent ev) {
View childView = getChildAt(0);//获取孩子控件
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
//记录按下时的y坐标(用来判断是向下还是向上滑动的操作)
downY = (int) ev.getY();
break;
case MotionEvent.ACTION_MOVE:
//判断向上滑动的情况,滑动到底部
// 当朝着Y方向滑动到底部的坐标(即scrollview的最大滑动量)+scrollview本身的高度大于或等于了孩子控件的高度
//说明这时要进行页面切换了,scrollview就返回false,不去进行触摸操作,给viewpager去向下翻页
if (downY > ev.getY() && childView != null && getScrollY() + getMeasuredHeight()
>= childView.getMeasuredHeight()) {
return false;
}
//判断向下滑动的情况,到顶部
//如果朝着Y方向滑动的坐标是小于等于0,说明是向上翻页的趋势,这时也返回false,给viewpager去翻页
if (downY < ev.getY() && getScrollY() <= 0) {
return false;
}
break;
}
return super.onTouchEvent(ev);
}
}
这是我的verticalviewpage
public class VerticalViewPager extends ViewPager {
public VerticalViewPager(Context context) {
this(context, null);
}
public VerticalViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
//设置viewpage的切换动画,这里设置才能真正实现垂直滑动的viewpager
setPageTransformer(true, new DefaultTransformer());
}
/**
* 拦截touch事件
*
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
boolean intercept = super.onInterceptTouchEvent(swapEvent(ev));
swapEvent(ev);
return intercept;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return super.onTouchEvent(swapEvent(ev));
}
private MotionEvent swapEvent(MotionEvent event) {
//获取宽高
float width = getWidth();
float height = getHeight();
//将Y轴的移动距离转变成X轴的移动距离
float swappedX = (event.getY() / height) * width;
//将X轴的移动距离转变成Y轴的移动距离
float swappedY = (event.getX() / width) * height;
//重设event的位置
event.setLocation(swappedX, swappedY);
return event;
}
}
这样弄只有 只能解决从上往下切换viewpage的滑动冲突,可是如果要切换上一个page时就会发生冲突,有没有大神指导下,许多东西还不是很懂,在做毕业设计