2012-06-05 4 views
5

Я хотел бы быть информированным, когда анимация заканчивается после этого вызова функции:Android ViewPager анимация

viewPager.setCurrentItem(2, true); 

Кто-нибудь знает, как это сделать?

ответ

-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 будет вызываться. Но это называется перед анимацией.

Когда анимация остановлена, onPageScrollStateChanged будет вызываться с состоянием SCROLL_STATE_IDLE.

Итак, вам нужно объединить эти два вызова функций, чтобы вызвать вашу функцию.

Удачи.

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; 
     } 
    } 
} 
Смежные вопросы