【问题标题】:ViewPager with multiple PageTransformer (PageTransformers at Runtime)具有多个 PageTransformer 的 ViewPager(运行时的 PageTransformers)
【发布时间】:2015-07-27 12:40:11
【问题描述】:

我的 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:更改attached

【问题讨论】:

  • 可以使用 mViewPager.setPageTransformer(false,transformer); 设置转换器那么问题是什么?
  • 不,但我已经阅读了它,并且由于对它的支持已经停止,我怀疑它是否涵盖了 ViewPager 的最新更改
  • 您能更好地阐明您的需求吗?或者关闭问题,因为(正如@RamandeepNanda 所建议的那样)您可以通过单个方法调用来更改转换?
  • 已编辑,希望更清楚。

标签: android android-viewpager android-pagetransformer


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,让我试试:)
  • 嘿,我已经编辑了我的问题。你能检查附件吗?您提供的那个效果很好,但是当我添加 VerticalPageTransformer 时,它给出了同样的收缩和黑屏问题
  • 从新链接获取压缩包。没有经过深入测试,但我认为现在这正是您所需要的。而且我相信您也可以对其进行修改以适应您的所有要求。
  • 你能得到我提到的问题吗?
  • 是的,使用您的代码,而不是使用我修改的代码。查看我的更新答案,有一个新链接
猜你喜欢
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多