4

我的 ViewPager 有一个自定义要求。我想要的是我的寻呼机默认应该有一个像DepthPageTransformer这样的水平 pageTransformer 。现在在屏幕上我有一个按钮,我希望我的当前页面从底部滑动到顶部,我的下一页像VerticalPageTransformer一样替换它,一旦页面更改,页面转换器应该改回默认的 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 编辑:附加更改

4

1 回答 1

3

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

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

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

为了实现 VerticalSlide,我对代码进行了一些更改。我相信现在可以接受答案了:)

于 2015-07-31T10:27:50.420 回答