8

Jetpack ナビゲーション ライブラリを使用していますが、フラグメント トランジションに問題があります。フェードまたはスライド アニメーションの場合、前の画面コンテンツではなく常に白い背景になります。

フラグメント 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>

アニメファイル

<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" />

誰でもそれを修正する方法を知っていますか?

4

1 に答える 1

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"/>

アニメーションを滑らかにするには、4 つのイベントすべてが必要です。

于 2019-10-14T09:01:06.013 に答える