2012-06-05 11 views
5

アニメーションはこの関数呼び出しの後に終了したときに、私は情報を希望:アンドロイドviewpagerアニメーション

viewPager.setCurrentItem(2, true); 

誰もがこれを実現する方法を知っていますか?あなたはOnPageChangeListenerを使用することができます

答えて

-1

は...

新しいページが選択されている
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

私は同じ問題を抱えています。 私の結論は次のとおりです。

ページが実際に変更されると、onPageSelectedが呼び出されます。 アニメーションの前に呼び出されます。

アニメーションが停止すると、onPageScrollStateChangedが状態SCROLL_STATE_IDLEで呼び出されます。

この2つの関数呼び出しを組み合わせて関数を呼び出す必要があります。

Good Luck。

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; 
     } 
    } 
} 
関連する問題