【问题标题】:How to create a transition where a fragment is slid upwards over another fragment?如何创建一个片段在另一个片段上向上滑动的过渡?
【发布时间】:2020-10-12 00:09:38
【问题描述】:

我有两个分别名为MainFragmentPlaybackFragment 的片段。我使用导航架构组件来实现两者之间的导航。

我想做的是创建一个过渡,其中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 关闭时它向上滑动。我在下面附上了一个例子。

有没有办法让PlaybackFragmentMainFragment 上滑动而不移动MainFragment?我不想使用底部表格,因为我认为这不是他们在这种情况下的预期目的。

【问题讨论】:

    标签: android android-fragments android-animation android-transitions


    【解决方案1】:

    使用什么都不做的动画。

    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" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多