我正在使用Android X过渡为同一托管活动中两个片段之间的运动动画化内容。
我正在尝试为ImageView设置动画,该ImageView中装有Glide和URL。
我遇到的问题是,无论两个ImageViews大小如何,在加载图像之前它们的大小均为0,因此,过渡捕获了错误的布局值并因此显示了缩小的动画 (动画大小为0)。
我已经读过有关使用postponeEnterTransition()
的信息,该信息应与startPostponedEnterTransition()
结合使用,以延迟两次通话之间的过渡时间。
这是架构:
在片段A的图像上单击时,将加载片段B。
在片段B的onCreate
中,我使用setSharedElementEnterTransition(transitions)
设置了过渡效果。然后我立即致电postponeEnterTransition()
;
在片段B的onCreateView
中,等待布局膨胀后,预先绘制ImageView(使用ViewTreeObserver),然后调用startPostponedEnterTransition()
。
在过渡上使用断点和侦听器,将在我到达绘制前回调之前触发listener#onTransitionStarted,这证明过渡捕获了错误的布局值。
另外,另一个证明postponeEnterTransition()
无效的证据表明,删除对startPostponedEnterTransition()
的调用不会永久保留过渡。
我做错了什么? 当然,当返回片段A时,也会播放相同的缩小动画...
答案 0 :(得分:2)
您应该通过在交易中添加setReorderingAllowed(true)
来设置片段交易期间允许的重新排序。
有关更多上下文,请参见Android docs和this blog post by Chris Banes的Reordering部分。