Android 导航组件 - 在屏幕导航上不希望闪烁

时间:2021-03-10 09:30:25

标签: android user-interface android-fragments uinavigationcontroller android-transitions

我正在使用 navigation 组件

'androidx.navigation:navigation-fragment-ktx:2.3.3'
'androidx.navigation:navigation-ui-ktx:2.3.3'

我不明白为什么当我从我的 startDestination 导航到下一个 Fragment 我短暂地闪烁了一下,然后我看到之前的活动持续了几毫秒。 当我导航到不同的片段时,这不会发生。

enter image description here

无论有没有导航动画都会发生这种情况。 尝试在堆栈中没有前一个 Activity 的情况下,它显示了 OS 主屏幕。

navigation.xml 文件如下所示:

 <fragment
    android:id="@+id/barcodeScannerFragment"
    android:name="com.sightplan.sightplanmobile.feature.barcode_scanner.BarcodeScannerFragment"
    android:label="@string/receive_package_barcode_input_view_header_param_title"
    tools:layout="@layout/barcode_scanner_fragment_layout">

    <action
        android:id="@+id/open_receive_package_details"
        app:destination="@id/receivePackageDetailsFragment"
        app:enterAnim="@anim/slide_left_anim"
        app:exitAnim="@anim/wait_anim"
        app:popEnterAnim="@anim/wait_anim"
        app:popExitAnim="@anim/slide_right_anim" />
</fragment>
<fragment
    android:id="@+id/receivePackageDetailsFragment"
    android:name="com.sightplan.sightplanmobile.packages.receive_package.ReceivePackageDetailsFragment"
    android:label="@string/receive_package_activity_on_create_header_bar_title"
    tools:layout="@layout/receive_package_details_fragment_layout">
.......

navigation(完整)设计如下所示: enter image description here

startDestination 导航到 Receive Package 屏幕的代码如下:

val action = BarcodeScannerFragmentDirections.openReceivePackageDetails()
            Navigation.findNavController(it).navigate(action)

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

问题是由于 theme 内的 navigation Activity 设置了 AndroidManifest.xml

我有一个自定义的 AppTheme,其中 android:windowIsTranslucent 设置为 true

删除即可解决问题。