Pengantar animasi

Mencoba cara Compose
Jetpack Compose adalah toolkit UI yang direkomendasikan untuk Android. Pelajari cara menggunakan Animasi di Compose.

Animasi dapat menambahkan isyarat visual yang memberi tahu pengguna tentang apa yang terjadi di aplikasi Anda. Hal ini berguna terutama saat UI berubah status, seperti saat konten baru dimuat atau tindakan baru tersedia. Animasi juga berperan memperindah aplikasi Anda, sehingga memberikannya tampilan dan nuansa yang lebih berkualitas.

Android menyertakan berbagai API animasi sesuai dengan jenis animasi yang Anda inginkan. Dokumentasi ini memberikan ringkasan tentang berbagai cara yang dapat Anda gunakan untuk menambahkan gerakan ke UI.

Untuk lebih memahami kapan Anda harus menggunakan animasi, lihat juga panduan Desain Material tentang gerakan.

Menganimasikan bitmap

Gambar 1. Drawable animasi.

Untuk menganimasikan grafik bitmap seperti ikon atau ilustrasi, gunakan API animasi yang dapat digambar. Biasanya, animasi ini ditentukan secara statis dengan resource yang dapat digambar, tetapi Anda juga dapat menentukan perilaku animasi saat runtime.

Misalnya, cara yang baik untuk mengomunikasikan kepada pengguna bahwa dua tindakan terkait adalah menganimasikan tombol putar yang berubah menjadi tombol jeda saat diketuk.

Untuk informasi selengkapnya, baca Menganimasikan grafik drawable.

Menganimasikan gerakan dan visibilitas UI

Gambar 2. Animasi halus saat dialog muncul dan menghilang membuat perubahan UI terlihat lebih mulus.

Jika Anda perlu mengubah visibilitas atau posisi tampilan di tata letak, sebaiknya sertakan animasi halus untuk membantu pengguna memahami perubahan UI.

Untuk memindahkan, menampilkan, atau menyembunyikan tampilan dalam tata letak saat ini, Anda dapat menggunakan sistem animasi properti yang disediakan oleh paket android.animation, yang tersedia di Android 3.0 (API level 11) dan yang lebih tinggi. API ini memperbarui properti objek View Anda selama jangka waktu tertentu, dengan terus-menerus menggambar ulang tampilan saat properti berubah. Misalnya, saat Anda mengubah properti posisi, tampilan akan bergerak melintasi layar. Saat Anda mengubah properti alfa, tampilan akan menjadi jelas atau memudar.

Untuk cara termudah membuat animasi ini, aktifkan animasi pada tata letak sehingga saat Anda mengubah visibilitas tampilan, animasi akan diterapkan secara otomatis. Untuk informasi selengkapnya, lihat Menganimasikan update tata letak secara otomatis.

Untuk mempelajari cara membuat animasi menggunakan sistem animasi properti, baca Ringkasan animasi properti. Anda juga dapat melihat halaman berikut untuk membuat animasi umum:

Gerakan berbasis fisika

Gambar 3. Animasi dibuat dengan ObjectAnimator.

Gambar 4. Animasi yang dibuat dengan API berbasis fisika.

Jika memungkinkan, terapkan fisika dunia nyata ke animasi Anda agar tampak alami. Misalnya, animasi harus menjaga momentum saat targetnya berubah dan melakukan transisi yang mulus selama perubahan apa pun.

Untuk memberikan perilaku ini, library Dukungan Android menyertakan API animasi berbasis fisika yang mengandalkan hukum fisika untuk mengontrol cara animasi Anda terjadi.

Dua animasi umum berbasis fisika adalah sebagai berikut:

Animasi yang tidak berbasis fisika—seperti yang dibuat dengan ObjectAnimator API—cukup statis dan memiliki durasi tetap. Jika nilai target berubah, Anda harus membatalkan animasi pada saat nilai target berubah, mengonfigurasi ulang animasi dengan nilai baru sebagai nilai awal baru, dan menambahkan nilai target baru. Secara visual, proses ini akan membuat penghentian mendadak dalam animasi, dan gerakan terputus setelahnya, seperti yang ditunjukkan pada gambar 3.

Animasi yang dibuat dengan API animasi berbasis fisika, seperti DynamicAnimation, digerakkan oleh gaya. Perubahan nilai target akan menghasilkan perubahan pada gaya tersebut. Gaya baru akan diterapkan pada kecepatan yang ada, sehingga melakukan transisi berkelanjutan ke target baru. Proses ini menghasilkan animasi yang tampak lebih alami, seperti yang ditunjukkan pada gambar 4.

Menganimasikan perubahan tata letak

Gambar 5. Animasi untuk menampilkan detail lainnya dapat dicapai dengan mengubah tata letak atau memulai aktivitas baru.

Pada Android 4.4 (API level 19) dan yang lebih tinggi, Anda dapat menggunakan framework transisi untuk membuat animasi saat menukar tata letak dalam aktivitas atau fragmen saat ini. Anda hanya perlu menentukan tata letak awal dan akhir, serta jenis animasi yang ingin digunakan. Kemudian sistem mencari tahu dan menjalankan animasi antara kedua tata letak tersebut. Anda dapat menggunakannya untuk menukar seluruh UI, memindahkan atau mengganti beberapa tampilan saja.

Misalnya, saat pengguna mengetuk item untuk melihat informasi selengkapnya, Anda dapat mengganti tata letak dengan detail item, menerapkan transisi seperti yang ditunjukkan pada gambar 5.

Tata letak awal dan akhir masing-masing disimpan dalam Scene, meskipun scene awal biasanya ditentukan secara otomatis dari tata letak saat ini. Anda membuat Transition untuk memberi tahu sistem jenis animasi yang Anda inginkan, lalu memanggil TransitionManager.go() dan sistem akan menjalankan animasi tersebut untuk menukar tata letak.

Untuk informasi selengkapnya, baca Menganimasikan perubahan tata letak menggunakan transisi. Untuk kode contoh, lihat BasicTransition .

Menganimasikan antara aktivitas

Di Android 5.0 (API level 21) dan yang lebih tinggi, Anda juga dapat membuat animasi yang bertransisi di antara aktivitas Anda. Ini didasarkan pada framework transisi yang sama seperti yang dijelaskan di bagian sebelumnya, tetapi memungkinkan Anda membuat animasi di antara tata letak dalam aktivitas terpisah.

Anda dapat menerapkan animasi sederhana seperti menggeser aktivitas baru dari sisi atau memudarnya, tetapi Anda juga dapat membuat animasi yang bertransisi di antara tampilan bersama dalam setiap aktivitas. Misalnya, saat pengguna mengetuk item untuk melihat informasi selengkapnya, Anda dapat mentransisikan ke aktivitas baru dengan animasi yang akan meluaskan item tersebut agar mengisi layar, seperti animasi yang ditunjukkan pada gambar 5.

Seperti biasa, Anda akan memanggil startActivity(), tetapi meneruskan paket opsi yang disediakan oleh ActivityOptions.makeSceneTransitionAnimation(). Paket opsi ini mungkin mencakup tampilan yang dibagikan di antara aktivitas sehingga framework transisi dapat menghubungkannya selama animasi berjalan.

Untuk referensi tambahan, lihat: