2012-06-05 57 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; 
     } 
    } 
}