Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

Menganimasikan transisi antar-tujuan

Komponen Navigasi memungkinkan Anda menambahkan properti dan animasi tampilan ke tindakan. Untuk membuat animasi sendiri, lihat Referensi animasi.

Navigasi juga menyertakan beberapa animasi default untuk memulai. Untuk menambahkan animasi ke tindakan, lakukan hal berikut:

  1. Di editor Navigasi, klik tindakan tempat animasi akan ditampilkan.
  2. Di bagian Animasi dari panel Atribut, klik panah drop-down di samping animasi yang ingin Anda tambahkan. Anda dapat memilih antara jenis berikut:
    • Memasuki tujuan
    • Keluar dari tujuan
    • Memasuki tujuan melalui pop action
    • Keluar dari tujuan melalui pop action
  3. Pilih animasi dari daftar animasi project yang muncul.

Setelah Anda menambahkan animasi, klik tab Teks untuk beralih ke tampilan teks XML. XML untuk animasi kini muncul di elemen <action> yang sesuai. Pada contoh berikut, specifyAmountFragment adalah tujuan asal untuk tindakan confirmationAction:

    <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>
    

Menambahkan Transisi Elemen Bersama antar-tujuan

Selain animasi transisi, Navigasi mendukung penambahan transisi elemen bersama antar-tujuan. Transisi elemen bersama diberikan secara terprogram, bukan melalui file XML navigasi, karena perlu mereferensikan instance View yang ingin Anda sertakan dalam transisi elemen bersama.

Setiap jenis tujuan menerapkan API terprogram ini melalui subclass antarmuka Navigator.Extras. Extras diteruskan ke panggilan navigate().

Transisi Elemen Bersama Tujuan Fragmen

Class FragmentNavigator.Extras memungkinkan Anda untuk melampirkan elemen bersama ke panggilan navigate() untuk tujuan fragmen, seperti yang ditunjukkan pada contoh di bawah:

Kotlin

    val extras = FragmentNavigatorExtras(
        imageView to "header_image",
        titleView to "header_title")
    view.findNavController().navigate(R.id.confirmationAction,
        null, // Bundle of args
        null, // NavOptions
        extras)
    

Java

    FragmentNavigator.Extras extras = new FragmentNavigator.Extras.Builder()
        .addSharedElement(imageView, "header_image")
        .addSharedElement(titleView, "header_title")
        .build();
    Navigation.findNavController(view).navigate(R.id.details,
        null, // Bundle of args
        null, // NavOptions
        extras);
    

Transisi Elemen Bersama Tujuan Aktivitas

Aktivitas mengandalkan ActivityOptionsCompat untuk mengontrol Transisi Elemen Bersama seperti yang dijelaskan di dokumentasi Memulai aktivitas dengan elemen bersama dan seperti yang ditunjukkan pada contoh di bawah:

Kotlin

    // Rename the Pair class from the Android framework to avoid a name clash
    import android.util.Pair as UtilPair
    ...
    val options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
            UtilPair.create(imageView, "header_image"),
            UtilPair.create(titleView, "header_title"))
    val extras = ActivityNavigator.Extras(options)
    view.findNavController().navigate(R.id.details,
        null, // Bundle of args
        null, // NavOptions
        extras)
    

Java

    ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
            Pair.create(imageView, "header_image"),
            Pair.create(titleView, "header_title"));

    ActivityNavigator.Extras extras = new ActivityNavigator.Extras.Builder()
        .setActivityOptions(options)
        .build();
    Navigation.findNavController(view).navigate(R.id.details,
        null, // Bundle of args
        null, // NavOptions
        extras);
    

Menerapkan animasi pop ke transisi Aktivitas

Saat Anda menavigasi ke atau dari Activity, animasi pop tidak diterapkan secara otomatis. Sebagai gantinya, Anda harus memanggil ActivityNavigator.applyPopAnimationsToPendingTransition() dari tujuan Activity target di mana animasi akan muncul:

Kotlin

    override fun finish() {
        super.finish()
        ActivityNavigator.applyPopAnimationsToPendingTransition(this)
    }
    

Java

    @Override
    public void finish() {
        super.finish();
        ActivityNavigator.applyPopAnimationsToPendingTransition(this);
    }