如何在Android导航组件中将深层链接与动画配合使用

问题描述

重新启动应用程序时,我想导航到最后一页的片段。
例如)MainFragment> UserListFragment> UserDetailFragment
使用NavDeepLinkBuilder创建了深层链接,因为我需要动态创建深层链接

final PendingIntent pendingIntent = new NavDeepLinkBuilder(requireContext())
        .setGraph(R.navigation.nav_graph)
        .setDestination(R.id.userDetailFragment)
        .createPendingIntent();
pendingIntent.send();

可以正常使用,但是没有动画。
如果我使用Uri的Deeplink,则可以使用NavController#navigate(Uri,NavOptions)。

是否可以在NavDeepLinkBuilder中使用动画?

对不起,我的英语不好。
谢谢。

解决方法

如果您使用的是navigate,则可以将另一个参数添加为NavOptions

public void navigate(@NonNull Uri deepLink,@Nullable NavOptions navOptions) {
    navigate(deepLink,navOptions,null);
}

然后以编程方式创建NavOptions

val navOptions =
    NavOptions.Builder()
        .setPopUpTo(
            R.id.nav_graph_main,false
        )
        .setEnterAnim(R.anim.slide_in_right)
        .setExitAnim(R.anim.slide_out_left)
        .setPopEnterAnim(R.anim.slide_in_left)
        .setPopExitAnim(R.anim.slide_out_right)
        .build()

或者您也可以在xml中创建操作,如下所示

<action
            android:id="@+id/action_notes_to_noteDetail"
            app:destination="@id/noteDetailFragment"
            app:enterAnim="@anim/enter_slide_down"
            app:exitAnim="@anim/exit_slide_down"
            app:popEnterAnim="@anim/pop_enter_slide_up"
            app:popExitAnim="@anim/pop_exit_slide_up" />

有关更多信息,您可以检查此navigation-architecture-component