当前位置: 首页 > 知识库问答 >
问题:

具有多个页面转换器的 ViewPager(运行时的页面转换器)

谷彦君
2023-03-14

我对我的可视寻呼机有一个自定义要求。我想要的是我的寻呼机应该有一个类似DepthPageTransformer的默认水平pageTransformer。现在,在屏幕上我有一个按钮,我希望我的当前页面从底部滑动到顶部,我的下一个页面像VerticalPageTransformer一样替换它,一旦页面改变,页面转换器应该改变回默认的DepthPageTransformer。

所以基本上我想在运行时应用页面变形器。任何帮助是值得赞赏的。

以下是我的代码:

//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:附加的更改

共有1个答案

松思源
2023-03-14

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

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

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

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

 类似资料:
  • 我使用的是Spring数据JPA。 我的控制器如下所示 现在我决定发送一个PageDTO对象来代替Page对象,以限制发送内容。有什么办法可以用java 8把页面转换成页面? 我看到Page是从派生而来的,所以我想我可以做一些类似的事情,但不知道如何将它与PageDTO和UserDTO结合起来。 有没有有效的java 8方法来做到这一点。 我想出了这个解决方案 我想知道是否有另一种有效的方法来做到

  • 我在我的应用程序中实现了android推送接收,只要应用程序在该页面启动,它就可以正常工作。但是如果您导航到实现推送通知的消息页,则转换不起作用。 在没有push实现的情况下,转换运行良好。 我想知道是否有人在实现特性时遇到过类似的问题。 工厂。js公司 一个pp.js 编辑 正如我尝试过的评论中所建议的那样 除了让屏幕闪烁之外什么也不做,而且 它尝试重新加载页面,但仅在损坏状态下,它加载白色背景

  • 问题内容: 我正在尝试创建类似POP框架的Facebook Menu Slide Down Animation或InShorts App的 动画。Android文档对此进行了说明。.但是在iOS中找不到任何提示。 我试图将细胞转变为 但这并没有按预期工作。.谷歌搜索我发现这正是我想要实现的目标。但是它继续。我认为最适合的动画是?我真的很感谢有人愿意帮助这个问题。这是我正在从事的入门项目 问题答案:

  • 我正试图在Spring将列表转换为页面。我已经用 新的PageImpl(users,pageable,users.size());

  • 转换页表是由操作系统为所有进程维护的全局页表。 在转换页表中,条目数等于主存储器中的帧数。 它可以用来克服页表的缺点。 无论是否存在于主存储器中,总是为页面保留一个空间。 但是,如果页面不存在,这只是内存的浪费。 可以通过反转页面表来节省这种浪费。 我们可以只保存主存中存在的页面的细节。 框架是索引,保存在块内的信息将是进程ID和页码。

  • 问题内容: 我有HATEOAS(HAL) REST服务,并设法通过下面的代码与之交谈(使用怪异的转换引擎),但是当我尝试合并转换器(和)时,应用程序将始终选择第一个转换器,而不是当然,这会导致错误。 如何避免重复的改造,只是在小字体细节上有所不同? 同样,问题是 当您尝试像这样缩短上述时间时: 您会在该行得到一个例外: 线程“主”中的异常java.lang.ClassCastException:c