安卓导航组件的碎片转场有白色背景

8
我正在使用Jetpack Navigation库并且在片段转换方面遇到了问题,无论是渐变还是滑动动画都会出现白色背景,而不是前一个屏幕的内容。
当从片段A跳转到片段B时,动画运行时,背景应该是片段A的,但实际上是白色背景。 导航
  <fragment
      android:id="@+id/nav_page"
      android:name="my.fragmenta"
      tools:layout="@layout/fragment_a">

    <action
        android:id="@+id/action_to_b"
        app:destination="@id/nav_b"
        app:enterAnim="@anim/slide_in_up"
        app:popExitAnim="@anim/slide_out_down"/>
  </fragment>

活动样式
  <style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:statusBarColor">@color/statusBarColor</item>
  </style>

anim文件

<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromYDelta="100%p"
    android:toYDelta="0"
    android:duration="@android:integer/config_longAnimTime" />

并且

<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromYDelta="0"
    android:toYDelta="100%p"
    android:duration="@android:integer/config_longAnimTime" />

有人知道如何修复它吗?


请分享您的anim文件的代码。 - Some random IT boy
请尝试使用app:exitAnim="@anim/slide_out_down"而不是popExitAnim,后者用于当您按下返回按钮或在堆栈中返回时。 - john-salib
@ElJazouli 你解决那个问题了吗? - extmkv
@extmkv 请查看更新的帖子。 - TootsieRockNRoll
2个回答

2

经过多次尝试,我发现这是最佳的动画过渡方法:

<action
    android:id="@+id/id"
    app:destination="@id/dest"
    app:enterAnim="@anim/slide_in_bottom"
    app:exitAnim="@anim/slide_out_top"
    app:popEnterAnim="@anim/slide_in_top"
    app:popExitAnim="@anim/slide_out_bottom"/>

或者
<action
    android:id="@+id/id"
    app:destination="@id/dest"
    app:enterAnim="@anim/slide_in_right"
    app:exitAnim="@anim/slide_out_left"
    app:popEnterAnim="@anim/slide_in_left"
    app:popExitAnim="@anim/slide_out_right"/>

为了使动画流畅,您需要拥有所有四个事件。


0

棘手的部分是您必须在操作中定义所有Anim字段。如下所示:

    <action
        android:id="@+id/action_profileFragment_to_personalInfoFragment"
        app:destination="@id/personalInfoFragment"
        app:enterAnim="@android:anim/slide_in_left"
        app:exitAnim="@android:anim/slide_out_right"
        app:popEnterAnim="@android:anim/slide_in_left"
        app:popExitAnim="@android:anim/slide_out_right"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接