Анимация ввода / вывода программно с использованием навигационных компонентов

#android #android-fragments #navigation

#Android #android-фрагменты #навигация

Вопрос:

Я использую библиотеку навигационных компонентов. При переходе к другому фрагменту, чтобы использовать анимацию, я понимаю, что могу добавить XML-код, подобный этому:

 <fragment
    android:id="@ id/specifyAmountFragment"
    android:name="com.example.buybuddy.buybuddy.SpecifyAmountFragment"
    android:label="fragment_specify_amount"
    tools:layout="@layout/fragment_specify_amount">
    <action
        android:id="@ id/confirmationAction"
        app:destination="@id/confirmationFragment"
        app:enterAnim="@anim/slide_in_right"
        app:exitAnim="@anim/slide_out_left"
        app:popEnterAnim="@anim/slide_in_left"
        app:popExitAnim="@anim/slide_out_right" />
 </fragment>
  

Но мне нужно использовать это программно.

Я был бы признателен за ваш ответ.

Ответ №1:

Я нашел ответ и просто хочу поделиться с вами.

Вы можете использовать NavOptions таким образом:

  val action = HomeFragmentDirections.actionHomeFragmentToFilesFragment2()

 val navOptions = NavOptions
   .Builder()
   .setEnterAnim(R.anim.fragment_open_enter)
   .setExitAnim(R.anim.fragment_close_exit)
   .setPopEnterAnim(R.anim.fragment_open_enter)
   .setPopExitAnim(R.anim.fragment_close_exit)
   .build()

  findNavController().navigate(action, navOptions)
  

Комментарии:

1. Обратите внимание, что, если у вас есть «всплывающее окно» в nav_graph, напишите новые параметры навигации. Builder(), подобный этому, будет игнорировать все, что у вас было в nav_graph