对于我的项目,我使用可滑动标签在列表之间导航。
当删除其中一个列表时,我希望有一个流畅的动画,并尝试使用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();
我希望有人能解决我的问题:)
答案 0 :(得分:1)
http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html
如果查看ViewPager的OnPageChangeListener,您将看到onPageScrollStateChanged方法。如果在监听器上覆盖它,则可以等待它发送“SCROLL_STATE_IDLE”作为参数,这意味着页面已经稳定并处于静止状态。但要小心,因为如果用户启动滚动但实际上没有进入新页面,您将得到解决,它将在当前页面上。您可能希望同时使用onPageSelected和onPageScrollStateChanged来跟踪页面是否转动,然后是否已完成转动。