Animasi Tampilan

Anda dapat menggunakan sistem animasi tampilan untuk melakukan animasi hitung nilai di Tampilan. Animasi hitung nilai menghitung animasi yang disertai informasi seperti titik awal, titik akhir, ukuran, rotasi, dan aspek umum lainnya dari sebuah animasi.

Animasi hitung nilai dapat menjalankan serangkaian transformasi sederhana (posisi, ukuran, rotasi, dan transparansi) pada konten objek View. Jadi, jika memiliki objek TextView, Anda dapat memindah, memutar, memperbesar, atau menyusutkan teks. Jika memiliki gambar latar, gambar latar akan berubah bersama teks. animation package menyediakan semua class yang digunakan dalam animasi hitung nilai.

Serangkaian petunjuk animasi menentukan animasi hitung nilai, yang ditentukan oleh kode XML atau Android. Seperti halnya menentukan tata letak, file XML direkomendasikan karena lebih mudah dibaca, lebih mudah digunakan kembali, dan lebih mudah diganti daripada membuat hard code animasi. Dalam contoh di bawah ini, kami menggunakan XML. (Untuk mempelajari lebih lanjut cara menentukan animasi dalam kode aplikasi Anda, sebagai ganti XML, lihat class AnimationSet dan subclass Animation lainnya.)

Petunjuk animasi menentukan transformasi yang Anda inginkan untuk terjadi, kapan terjadinya, dan berapa lama waktu yang diperlukan untuk menerapkannya. Transformasi dapat bersifat berurutan atau simultan. Misalnya, Anda dapat membuat konten TextView bergerak dari kiri ke kanan, lalu berputar 180 derajat, atau Anda dapat membuat teks bergerak dan berputar secara bersamaan. Setiap transformasi memerlukan sekumpulan parameter khusus untuk transformasi tersebut (ukuran awal dan ukuran akhir untuk perubahan ukuran, sudut awal dan sudut akhir untuk rotasi, dan sebagainya), serta sekumpulan parameter umum (misalnya, waktu mulai dan durasi). Agar beberapa transformasi terjadi secara bersamaan, berikan waktu mulai yang sama. Agar beberapa transformasi terjadi secara berurutan, hitung waktu mulai ditambah durasi transformasi sebelumnya.

File XML animasi berada di direktori res/anim/ project Android Anda. File harus memiliki satu elemen root: ini dapat berupa satu elemen <alpha>, <scale>, <translate>, <rotate>, elemen interpolator, atau <set> yang menampung kelompok elemen ini (yang dapat menyertakan <set> lain). Secara default, semua petunjuk animasi diterapkan secara bersamaan. Agar keduanya terjadi secara berurutan, Anda harus menentukan atribut startOffset, seperti yang ditunjukkan pada contoh di bawah.

XML dari salah satu ApiDemos berikut digunakan untuk meregangkan, lalu memutar dan memutar objek View secara bersamaan.

<set android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>
</set>

Koordinat layar (tidak digunakan dalam contoh ini) adalah (0,0) di sudut kiri atas, dan meningkat saat Anda turun dan ke kanan.

Beberapa nilai, seperti pivotX, dapat ditentukan secara relatif terhadap objek itu sendiri atau terhadap induk. Pastikan untuk menggunakan format yang tepat untuk apa yang Anda inginkan ("50" untuk 50% relatif terhadap induk, atau "50%" untuk 50% terhadap nilai itu sendiri).

Anda dapat menentukan bagaimana transformasi diterapkan dari waktu ke waktu dengan menetapkan Interpolator. Android menyertakan beberapa subclass Interpolator yang menentukan berbagai kurva kecepatan: misalnya, AccelerateInterpolator memberi tahu transformasi untuk memulai dengan lambat lalu mempercepatnya. Masing-masing memiliki nilai atribut yang dapat diterapkan dalam XML.

Dengan XML ini yang disimpan sebagai hyperspace_jump.xml dalam direktori res/anim/ project, kode berikut akan mereferensikannya dan menerapkannya ke objek ImageView dari tata letak.

Kotlin

AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation ->
    findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation)
}

Java

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

Sebagai alternatif startAnimation(), Anda dapat menentukan waktu mulai untuk animasi dengan Animation.setStartTime(), lalu menetapkan animasi ke Tampilan dengan View.setAnimation().

Untuk informasi selengkapnya tentang sintaks XML, atribut, dan tag yang tersedia, lihat Resource Animasi.

Catatan: Terlepas dari bagaimana animasi bergerak atau berubah ukuran, batas-batas Tampilan yang menampung animasi Anda tidak akan otomatis menyesuaikan untuk mengakomodasinya. Meskipun begitu, animasi akan tetap digambar di luar batas-batas Tampilannya dan tidak akan terpangkas. Namun, pemangkasan akan terjadi jika animasi melebihi batas Tampilan induk.