2012-06-05 58 views

回答

-1

您可以使用OnPageChangeListener ..

viewPager.setOnPageChangeListener(new OnPageChangeListener() { 

    @Override 
    public void onPageSelected(int arg0) { 
     // The code you want to run when scrolling is complete    
    } 

    @Override 
    public void onPageScrolled(int arg0, float arg1, int arg2) {} 

    @Override 
    public void onPageScrollStateChanged(int arg0) {} 
}); 

当选择了一个新的页面,使用onPageSelected()被调用。

+0

来自onPageSelected()文档 - 当选择新页面时,将调用此方法。 **动画不一定完整**。 http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html#onPageSelected(int) – djdmbrwsk

25

我遇到过同样的问题。 以下是我的结论:

当页面实际改变时,PageSelected将被调用。 但它在动画之前调用。

当动画停止时,将使用状态SCROLL_STATE_IDLE调用onPageScrollStateChanged。

所以你必须结合这两个函数调用来调用你的函数。

祝你好运。

private class PageChangeListener implements OnPageChangeListener { 

    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
    } 

    @Override 
    public void onPageSelected(int position) { 
     isPageChanged = true; 
    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 
     switch (state) { 
     case ViewPager.SCROLL_STATE_IDLE: 
      if (isPageChanged) { 
       updateCurrentPage();//this will be called when animation ends 
       isPageChanged = false; 
      } 
      break; 
     case ViewPager.SCROLL_STATE_DRAGGING: 
      break; 
     case ViewPager.SCROLL_STATE_SETTLING: 
      break; 
     } 
    } 
}