2

对于我的项目,我使用可滑动的标签在列表之间导航。删除其中一个列表时,我希望有一个流畅的动画,并尝试通过viewpager.setCurrentItem(page, true);在删除列表之前先切换到另一个页面来存档它。然后,我尝试在切换页面以删除带有OnPageChangeListener.

我的问题是似乎onPageSelected(int position)在动画完成之前调用了。

这是代码:)

我开始动画的地方:

case R.id.menu_clear_lists:
int pageAmount = sectionsPagerAdapter.getCount();
if (pageAmount < 2)
return false;
int page = viewPager.getCurrentItem();
int newPage = page == 0 ? page + 1 : page - 1;
deleteOnChange = true;
deletePage = page;
viewPager.setCurrentItem(newPage, true);
return true;

事件处理程序:

if (!deleteOnChange)
    return;
deleteOnChange = false;
Resource.deleteList(deletePage);
sectionsPagerAdapter.destroyItem(viewPager,
viewPager.getCurrentItem(),
sectionsPagerAdapter.getItem(deletePage));
sectionsPagerAdapter.notifyDataSetChanged();

我希望有人能解决我的问题:)

4

1 回答 1

1

http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html

如果您查看 ViewPager 的 OnPageChangeListener,您会看到一个 onPageScrollStateChanged 方法。如果你在你的监听器上覆盖它,你可以等待它发送一个“SCROLL_STATE_IDLE”作为参数,这意味着页面已经稳定并处于静止状态。但是要小心,因为如果用户开始滚动但实际上并没有转到新页面,您将得到解决并且它将在当前页面上。您可能希望同时使用 onPageSelected 和 onPageScrollStateChanged 来跟踪页面是否已翻页,以及是否已翻页。

于 2013-08-22T21:47:07.340 回答