片段到片段的过渡:postponeEnterTransition() 不起作用
Fragment to Fragment Transition: postponeEnterTransition() does not work
我正在使用 Android X 转换在同一主机 Activity.
中通过两个片段之间的运动来制作动画内容
我正在尝试为一个 ImageView 设置动画,该图像加载了 Glide 和一个 URL。
我遇到的问题是,不管两个 ImageViews 的大小如何,在加载图像之前它们的大小都是 0,因此,过渡捕获了错误的布局值,因此显示了缩小的动画(动画大小为 0)。
我已经阅读了有关使用 postponeEnterTransition()
的信息,它应该与 startPostponedEnterTransition()
相关联地延迟两次调用之间的过渡。
这是架构:
- 片段A,图片在屏幕底部,宽度为屏幕宽度的一半。
- 片段B,图片在屏幕顶部,宽度为屏幕宽度。
点击 Fragment A 的图片,加载 Fragment B。
在片段 B 的 onCreate
中,我使用 setSharedElementEnterTransition(transitions)
设置了过渡。那我立马叫postponeEnterTransition()
;
在 Fragment B 的 onCreateView
中,我等待 ImageView 被预绘制(使用 ViewTreeObserver),在布局 inflation 之后,然后我调用 startPostponedEnterTransition()
。
在我的转换中使用断点和侦听器,在我到达预绘制回调之前触发了侦听器#onTransitionStarted,这证明转换捕获了错误的布局值。
此外,另一个证明 postponeEnterTransition()
没有任何效果的证据是,删除对 startPostponedEnterTransition()
的调用不会永远保持转换。
我做错了什么?
当然,回到Fragment A时,也在播放同样的缩小动画...
您应该通过将 setReorderingAllowed(true)
添加到您的交易来设置在您的片段交易期间允许重新排序。
有关更多上下文,请参阅 Android docs and the Reordering part of this blog post by Chris Banes。
我正在使用 Android X 转换在同一主机 Activity.
中通过两个片段之间的运动来制作动画内容我正在尝试为一个 ImageView 设置动画,该图像加载了 Glide 和一个 URL。
我遇到的问题是,不管两个 ImageViews 的大小如何,在加载图像之前它们的大小都是 0,因此,过渡捕获了错误的布局值,因此显示了缩小的动画(动画大小为 0)。
我已经阅读了有关使用 postponeEnterTransition()
的信息,它应该与 startPostponedEnterTransition()
相关联地延迟两次调用之间的过渡。
这是架构:
- 片段A,图片在屏幕底部,宽度为屏幕宽度的一半。
- 片段B,图片在屏幕顶部,宽度为屏幕宽度。
点击 Fragment A 的图片,加载 Fragment B。
在片段 B 的 onCreate
中,我使用 setSharedElementEnterTransition(transitions)
设置了过渡。那我立马叫postponeEnterTransition()
;
在 Fragment B 的 onCreateView
中,我等待 ImageView 被预绘制(使用 ViewTreeObserver),在布局 inflation 之后,然后我调用 startPostponedEnterTransition()
。
在我的转换中使用断点和侦听器,在我到达预绘制回调之前触发了侦听器#onTransitionStarted,这证明转换捕获了错误的布局值。
此外,另一个证明 postponeEnterTransition()
没有任何效果的证据是,删除对 startPostponedEnterTransition()
的调用不会永远保持转换。
我做错了什么? 当然,回到Fragment A时,也在播放同样的缩小动画...
您应该通过将 setReorderingAllowed(true)
添加到您的交易来设置在您的片段交易期间允许重新排序。
有关更多上下文,请参阅 Android docs and the Reordering part of this blog post by Chris Banes。