我正在使用 Jetpack Navigation 库并且 fragment 转换有问题,如果它是淡入淡出或滑动动画,它始终具有白色背景而不是之前的屏幕内容。
fragment A -> fragment B,当动画运行时看到的背景不是fragment 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>
Activity 风格
<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" />
有人知道如何解决吗?
最佳答案
经过多次尝试,我认为这是动画过渡的最佳方法:
<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"/>
您应该拥有所有四个事件才能获得流畅的动画效果。
关于Android 导航组件 fragment 转换具有白色背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56838822/