您的位置:首页 > 其它

解决SwipeRefreshLayout和ScrollView中嵌套ViewPager卡顿问题

2016-04-29 18:41 369 查看
autoCycleViewPager.setOnTouchListener(this);
int downX;
int downY;
int dragthreshold = 30;

@Override
public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downX = (int) event.getRawX();
downY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int distanceX = Math.abs((int) event.getRawX() - downX);
int distanceY = Math.abs((int) event.getRawY() - downY);
if (distanceX > distanceY) {
refreshLayout.setEnabled(false);
}
if (distanceY > distanceX && distanceY > dragthreshold) {
autoCycleViewPager.getParent().requestDisallowInterceptTouchEvent(false);
scrollView.getParent().requestDisallowInterceptTouchEvent(true);
refreshLayout.setEnabled(true);
} else if (distanceX > distanceY && distanceX > dragthreshold) {
refreshLayout.setEnabled(false);
autoCycleViewPager.getParent().requestDisallowInterceptTouchEvent(true);
scrollView.getParent().requestDisallowInterceptTouchEvent(false);
}
break;
case MotionEvent.ACTION_UP:
autoCycleViewPager.getParent().requestDisallowInterceptTouchEvent(false);
scrollView.getParent().requestDisallowInterceptTouchEvent(false);
refreshLayout.setEnabled(true);
break;
case MotionEvent.ACTION_CANCEL:
refreshLayout.setEnabled(true);
break;
}
return false;
}




只需要在监听ViewPager的OnTouch事件上做如上的处理就可以完美解决问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: