如何创建一个片段向上滑动到另一个片段上的过渡?
How to create a transition where a fragment is slid upwards over another fragment?
我有两个分别名为 MainFragment
和 PlaybackFragment
的片段。我使用 Navigation Architecture Component 来实现两者之间的导航。
我想要做的是创建一个过渡,其中 PlaybackFragment
会滑过 MainFragment
,当用户关闭 PlaybackFragment
时,它会向下滑动,显示 MainFragment
再次。
为此,我制作了两个翻译动画。一个用于向上滑动:
anim_nav_slide_up.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromYDelta="100%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toYDelta="0%" />
还有一个向下滑动:
anim_nav_slide_down.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromYDelta="0%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toYDelta="100%" />
问题在于,MainFragment
不会在过渡发生时保持静止,而是 MainFragment
会像显示 PlaybackFragment
那样向下滑动,而当 PlaybackFragment
时会向上滑动已关闭。我在下面附上了一个例子。
有没有办法让 PlaybackFragment
滑过 MainFragment
而 MainFragment
不移动?我不想使用 Bottom Sheets,因为我认为这不是他们在这种情况下的预期目的。
使用什么都不做的动画。
hold.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0.0%p"
android:toYDelta="0.0%p" />
</set>
并在导航组件 xml 文件中将其指定为 popEnterAnim
app:popEnterAnim="@anim/hold"
app:popExitAnim="@anim/slide_out_down"
我有两个分别名为 MainFragment
和 PlaybackFragment
的片段。我使用 Navigation Architecture Component 来实现两者之间的导航。
我想要做的是创建一个过渡,其中 PlaybackFragment
会滑过 MainFragment
,当用户关闭 PlaybackFragment
时,它会向下滑动,显示 MainFragment
再次。
为此,我制作了两个翻译动画。一个用于向上滑动:
anim_nav_slide_up.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromYDelta="100%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toYDelta="0%" />
还有一个向下滑动:
anim_nav_slide_down.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromYDelta="0%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toYDelta="100%" />
问题在于,MainFragment
不会在过渡发生时保持静止,而是 MainFragment
会像显示 PlaybackFragment
那样向下滑动,而当 PlaybackFragment
时会向上滑动已关闭。我在下面附上了一个例子。
有没有办法让 PlaybackFragment
滑过 MainFragment
而 MainFragment
不移动?我不想使用 Bottom Sheets,因为我认为这不是他们在这种情况下的预期目的。
使用什么都不做的动画。
hold.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0.0%p"
android:toYDelta="0.0%p" />
</set>
并在导航组件 xml 文件中将其指定为 popEnterAnim
app:popEnterAnim="@anim/hold"
app:popExitAnim="@anim/slide_out_down"