Android viewpager动画

use*_*739 6 animation android android-viewpager

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

viewPager.setCurrentItem(2, true);
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

小智 27

我遇到过同样的问题.以下是我的结论:

当页面实际更改时,将调用onPageSelected.但它是在动画之前调用的.

当动画停止时,将使用状态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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Ole*_*Ole -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) {}
});
Run Code Online (Sandbox Code Playgroud)

当选择新页面时,将调用 onPageSelected()。