看了CSDN很多人写的引导页解决方案仍觉得改动太多,自己写了种解决方案,觉得更好。
OnPageChangeListener接口中一个onPageScrollStateChanged(int arg0)回调函数,会返回滑动的状态。
agr0为返回的状态
ViewPager.SCROLL_STATE_DRAGGING: 值为1,表示当前页面正在拖动。
ViewPager.SCROLL_STATE_SETTLING: 值为2,表示当前页面正在拖动中,还没有到选定状态。
ViewPager.SCROLL_STATE_IDLE: 值为0,表示当前页已经选定。
当ViewPager正常滑动界面时(当前页前后仍有页面时)会先后调用
1.SCROLL_STATE_DRAGGING
2.SCROLL_STATE_SETTLING
3.SCROLL_STATE_IDLE
当ViewPager滑动到边界时,再往边界方向滑动时会先后调用
1.SCROLL_STATE_DRAGGING
2.SCROLL_STATE_IDLE
解决方案很简单:
SCROLL_STATE_DRAGGING+SCROLL_STATE_SETTLING+SCROLL_STATE_IDLE=3
SCROLL_STATE_DRAGGING+SCROLL_STATE_IDLE=1
当等于3时就是非边界滑动,当等于1时就是边界滑动
// 当滑动状态改变时调用
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
switch (arg0) {
case ViewPager.SCROLL_STATE_DRAGGING:
DSI+=1;
break;
case ViewPager.SCROLL_STATE_SETTLING:
DSI+=2;
break;
case ViewPager.SCROLL_STATE_IDLE:
if (vp.getCurrentItem() == vp.getAdapter().getCount() - 1 && DSI==1) {
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
finish();
}
DSI=0;
break;
}
}