具有多个 PageTransformer 的 ViewPager(运行时的 PageTransformer)

ViewPager with multiple PageTransformer (PageTransformers at Runtime)

我对 ViewPager 有自定义要求。我想要的是我的寻呼机应该有一个像 DepthPageTransformer by default. Now on the screen I have a button on press of which I want my current page to slide on top from bottom and my next page replacing it like VerticalPageTransformer 这样的水平 pageTransformer,并且一旦页面更改,页面转换器就应该改回默认的 DepthPageTransformer。

所以基本上我想在运行时应用 pageTransformers。感谢任何帮助。

这是我的代码:

//sets intial page transformer
viewPager.setPageTransformer(false,new DepthPageTransformer());

现在,当我点击其 onCLick 中的按钮时,我有:

//sets vertical page transformer
viewPager.setPageTransformer(false,new VerticalPageTransformer());
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);

然后在我的 onPageSelected() 中将其设置回初始值

@Override
public void onPageSelected(int position) {
    viewPager.setPageTransformer(false,new DepthPageTransformer());
}

听起来很简单也很正确,但是页面转换一点都不流畅。他们行为怪异。页面在时间收缩。翻页速度快到根本看不出变化

为@Mimmo 编辑:更改 attached

这不是我一生中最好的项目,但您可以下载此 zip file 找到参考实现。这是一个 Android Studio 项目,我基本上用过:

mPager.beginFakeDrag()
mPager.fakeDragBy(float val);
mPager.endFakeDrag();

结合动画来模拟 ViewPager 的平滑滚动。 ViewPager 有一个默认的 DepthPageTransformer 5 页。当您单击底部的 'Click Me' 按钮时,一个页面将添加到 ViewPager,PageTransformer 将更改为 FlipVerticalTransformer 并使用我之前提到的方法执行拖动。

为了实现 VerticalSlide,我对代码做了一些 changes。我相信答案现在可以被接受:)