Вопрос по android-viewpager, android – Анимация просмотра Android

6

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

viewPager.setCurrentItem(2, true);

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

Ваш Ответ

2   ответа
27

Я сталкивался с той же проблемой. следующее мое заключение:

Когда страница действительно изменяется, вызывается onPageSelected.   Но он вызывается до анимации.

Когда анимация остановлена, 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;
        }
    }
}
-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 ().

Из документов onPageSelected () - этот метод будет вызываться при выборе новой страницы.Animation is not necessarily complete. developer.android.com/reference/android/support/v4/view/…

Похожие вопросы