整体ScrollView 有一个滑动效果。 里面还有一个viewpager 左右滑动的效果。 商品详情 里面 是一个网页。 这样 就很麻烦。 拦截机制 就会很考验。
我说一下 我实现的思路
在自定义的ScrollView 中
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
nHer = curY - yLast;
xLast = curX;
yLast = curY;
if(getHeight()+getScrollY()>=dp2px(450)+a&&nHer<0)
{
关键方法。 滑动的距离 加上getHeight() 获取的屏幕高度 来和450 viewpager的高度。 还有a的高度
a 根据大家的需求来。 看到gif显示 我的就是 卡在哪个页面的控件的高度。
huadong = true;
return false;
//you are at the end of the list in scrollview
//do what you wanna do here
}
if(xDistance > yDistance){
return false;
}else{
// if(nHer>0){
// return super.onInterceptTouchEvent(ev);
// }else{
// return false;
// }
}
if(huadong){
return false;
}else{
}
// if(getScrollY() >a){
// return false;
// }else {
//// return true;
// }
}
return super.onInterceptTouchEvent(ev);
}