片段到片段转换:postponeEnterTransition()不起作用

问题描述 投票:1回答:1

我正在使用Android X过渡来在同一个托管活动中的两个片段之间运动动画内容。

我试图动画一个ImageView,其中Image加载了Glide和一个URL。

我遇到的问题是,无论两个ImageViews大小如何,在加载图像之前它们的大小都是0,因此,转换会捕获错误的布局值,因此会显示缩小的动画(动画缩小为0)。

我已经阅读过关于使用postponeEnterTransition()的内容,它应该与startPostponedEnterTransition()相关联,延迟两次调用之间持续时间的转换。

这是架构:

  • 片段A,图像位于屏幕的底部,宽度是屏幕宽度的一半。
  • 片段B,图像位于屏幕的顶部,宽度是屏幕宽度的宽度。

在片段A的图像单击上,加载片段B.

在片段B的onCreate中,我使用setSharedElementEnterTransition(transitions)设置我的过渡。然后我马上打电话给postponeEnterTransition();

在Fragment B的onCreateView中,我等待ImageView预先绘制(使用ViewTreeObserver),布局通胀后,然后我调用startPostponedEnterTransition()

在我的转换上使用断点和监听器,在我到达预绘制回调之前触发了#onTransitionStarted监听器,这证明转换捕获了错误的布局值。

此外,postponeEnterTransition()没有任何影响的另一个证据,取消对startPostponedEnterTransition()的呼吁并不能永远保持过渡。

我究竟做错了什么 ?当然,当回到片段A时,同样正在播放同样缩小的动画......

android android-fragments shared-element-transition fragment-transitions
1个回答
2
投票

您应该在片段交易期间通过将setReorderingAllowed(true)添加到您的交易中来设置允许的重新排序。

有关更多背景信息,请参阅Android docsthis blog post by Chris Banes的重新排序部分。

© www.soinside.com 2019 - 2024. All rights reserved.