Animate ViewPager.setAdapter()方法

时间:2017-09-13 17:45:56

标签: android animation android-viewpager

解释起来有点复杂。在我的布局中,我有一个ViewPager组件。在我的MainActivity中,我初始化它并在其上设置自定义FragmentStatePagerAdapter:

mPager = (ViewPager) findViewById(R.id.pagerMain);
mPagerAdapter = new ScreenSlidePagerAdapter(this.getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);

这是我的Custom ScreenSlidePagerAdapter:

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {

    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return ScreenSlidePageFragment.init(position, candidateID);
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }
}

使用一些ImageView初始化ScreenSlidePageFragment。到现在为止还挺好。接下来会发生什么,我更新内容,意味着PageViewer中的ImageViews并使用

  

mPager.setAdapter(mPagerAdapter);

要更新。当我重置适配器时,我可以在屏幕上看到新的ImageView。正是这种突然的变化才是我想要避免的。当ViewPager刷新其内容时,我希望将其设置为动画。当你解雇一个人时,有点喜欢火种。再说一遍:我没有谈到在设置适配器之后ImageViews之间的滑动动画,但是当我更改/重建适配器本身时。

我尝试了很多东西,但我不知道在哪里应用动画和哪个对象。你是否有一个想法,适配器可以像片段在被替换时动画一样动画是多么令人耳目一新?

1 个答案:

答案 0 :(得分:0)

经过大量尝试和错误后,我通过为第一个ItemPosition添加“RootFragment”来解决它,用我真正的第一个Fragment替换这个Fragment,并且使用常见的FragmentTransaction将setCustomAnimations替换为它。

我认为有更好的方法可以做到这一点,在大多数情况下,当设置PageViewer时,它会保持这种状态。这就是为什么我在解决这个问题上遇到这么多困难。如果您想了解有关PageViewer的更多信息,请阅读:

https://guides.codepath.com/android/ViewPager-with-FragmentPagerAdapter