安卓ViewPager动画

7

在此函数调用后,当动画结束时,我希望得到通知:

viewPager.setCurrentItem(2, true);

有人知道如何实现这个吗?
2个回答

29

我遇到了相同的问题。 以下是我的结论:

当页面实际改变时,将调用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()文档中 - 当新页面被选中时,将调用此方法。动画不一定完成。http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html#onPageSelected(int) - djdmbrwsk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接