能够解决listview嵌套viewpager之后 滑动不流畅的问题
这是引用别人的代码,用在我的项目中刚好能解决问题,只需要对一些值进行改变就可以了
public class MyViewPager extends ViewPager {
private float xDown;// 记录手指按下时的横坐标。
private float xMove;// 记录手指移动时的横坐标。
private float yDown;// 记录手指按下时的纵坐标。
private float yMove;// 记录手指移动时的纵坐标。
private boolean viewpagersroll = false;// 当前是否是viewpager滑动
public MyViewPager(Context context) {
super(context);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// 记录按下时的位置
xDown = ev.getRawX();
yDown = ev.getRawY();
} else if (ev.getAction() == MotionEvent.ACTION_MOVE) {
xMove = ev.getRawX();
yMove = ev.getRawY();
if (viewpagersroll) {
// viewpager自己处理滑动效果
getParent().requestDisallowInterceptTouchEvent(true);
return super.dispatchTouchEvent(ev);
}
// 这里的动作判断是Viewpager滑动,ListView不滑动
if (Math.abs(yMove - yDown) < 20 && Math.abs(xMove - xDown) > 5) {
viewpagersroll = true;
} else {
// 由父容器listview来处理滑动效果
return false;
}
} else if (ev.getAction() == MotionEvent.ACTION_UP) {
viewpagersroll = false;
}
return super.dispatchTouchEvent(ev);
}
}
当横向滑动的时候 viewpager拦截了事件 当上下滑动的时候 listview重新获得事件