与NavigationComponent的SharedElementTransition

时间:2019-07-17 17:15:55

标签: android android-fragments animation androidx shared-element-transition

我的应用程序在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%),同时发生动画。这将使元素在屏幕外进行动画处理,然后闪烁回到目标此时已设置动画的位置(在返回导航动画之后)。

如何使共享视图动画化到视图的最终位置(在上一个片段完成动画处理之后)而不是动画开始时的位置?

0 个答案:

没有答案