在此函数调用后,当动画结束时,我希望得到通知:
viewPager.setCurrentItem(2, true);
有人知道如何实现这个吗?
在此函数调用后,当动画结束时,我希望得到通知:
viewPager.setCurrentItem(2, true);
我遇到了相同的问题。 以下是我的结论:
当页面实际改变时,将调用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;
}
}
}
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) {}
});