我的应用程序在Jetpack导航中使用单一活动。我在两个片段之间有一个共享的元素过渡,第一个片段具有一个RecyclerView,其中包含多个项目,单击其中一个时,共享的元素过渡会动画到第二个。这部分按预期工作。
对于屏幕之间的过渡,我选择了动画以在片段之间进行过渡。
退出过渡:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="@integer/activity_transition_duration"/>
</set>
弹出进入过渡:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="@integer/activity_transition_duration"/>
</set>
基本上使片段从右进入,而先前的片段被翻译到左侧。但是,当向后导航时,共享元素过渡会将视图定向到屏幕外仍在屏幕上的位置(向左平移100%),同时发生动画。这将使元素在屏幕外进行动画处理,然后闪烁回到目标此时已设置动画的位置(在返回导航动画之后)。
如何使共享视图动画化到视图的最终位置(在上一个片段完成动画处理之后)而不是动画开始时的位置?