android中viewFillper,scrollview的嵌套问题
在scrollview中嵌套了viewfillper,viewfillper左右滑动翻页,会被scrollView的touch事件所有影响,从而影响了viewfillper的滑动时间,影响了用户体验。
解决方法,自定义scrollView,重写它的onInterceptTouchEvent。判断手势移动的距离,包括x方向的,和y方向的。然后比较两个方向的的距离,x方向的距离大就跳过scrollView的touch事件,执行viewfillper的滑动事件,反之,y方向的距离大,就执行scrollView的上下滑动事件。
代码如下:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xStart = ev.getX();
yStart = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
xEnd = ev.getX();
yEnd = ev.getY();
break;
default:
break;
}
xDistance = Math.abs(xEnd-xStart);
yDistance = Math.abs(yEnd-yStart);
if(xDistance>yDistance)
return false;
return super.onInterceptTouchEvent(ev);
}
经过测试,此种方法效果不错。