Bagaimana saya bisa menganimasikan transisi antar tujuan dalam navigasi?

Beginilah cara saya melanjutkan ke fragmen berikutnya

Handler().postDelayed({
            findNavController().navigate(R.id.nav_food_text_analysis,null)
        },6000)

Ini adalah dua file xml animasi

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:fromXDelta="100%" android:toXDelta="0%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration = "1000"/>

</set>  

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:fromXDelta="0%" android:toXDelta="100%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration = "1000"/>

</set>

Ini navigasi xml saya my

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mobile_navigation"
    app:startDestination="@id/welcome_fragment">

    <fragment
        android:id="@+id/nav_food_text_analysis"
        android:name="com.example.nutritionfacts.ui.foodTextAnalysis.FoodAnalysisFragment"
        android:label="Food analysis"
        tools:layout="@layout/fragment_food_text_analysis" />
    <fragment
        android:id="@+id/nav_recipe_analysis"
        android:name="com.example.nutritionfacts.ui.recipeAnalysis.RecipeAnalysis"
        android:label="Recipe analysis"
        tools:layout="@layout/fragment_recipe_analysis" />
    <fragment
        android:id="@+id/welcome_fragment"
        android:name="com.example.nutritionfacts.ui.welcomeScreen.WelcomeScreen"
        android:label="welcome screen"
        tools:layout="@layout/fragment_welcome_screen" >
        <action
            android:id="@+id/action_welcome_fragment_to_nav_food_text_analysis2"
            app:destination="@id/nav_food_text_analysis"
            app:enterAnim="@anim/enter_from_right"
            app:exitAnim="@anim/exit_to_right"
            app:popExitAnim="@anim/fragment_open_exit" />
    </fragment>
</navigation>

Saya membutuhkannya untuk menjadi seperti ini gif

Saya mendapatkan hasil yang saya butuhkan dengan kode ini

      Handler().postDelayed({
      (activity as AppCompatActivity).supportFragmentManager
                .beginTransaction()
                .setCustomAnimations(
                    R.anim.enter_from_right,
                    R.anim.exit_to_right
                )
                .replace(R.id.nav_host_fragment, FoodAnalysisFragment())
                .commit()
        },6000)

Tapi sekarang saya perlu menggunakan navigasi untuk mengganti fragmen Tolong bantu saya

0
Artem 7 Juli 2020, 05:21

1 menjawab

Jawaban Terbaik

Anda menggunakan navigate(R.id.nav_food_text_analysis, null) - menggunakan ID tujuan secara langsung, yang berarti tidak ada animasi yang dijalankan.

Anda ingin menggunakan navigate(R.id.action_welcome_fragment_to_nav_food_text_analysis2, null) jika Anda ingin menavigasi melalui tindakan Anda dan menjalankan enterAnim dan exitAnim yang terkait dengan tindakan tersebut.

0
ianhanniballake 7 Juli 2020, 03:52