Anda dapat menggunakan sistem animasi tampilan untuk melakukan animasi hitung nilai di Tampilan. Animasi hitung nilai menghitung animasi yang disertai dengan 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 teks memiliki
gambar latar, gambar latar akan diubah 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 saat menentukan tata letak, file XML direkomendasikan karena lebih mudah dibaca,
dapat digunakan kembali, dan dapat diganti daripada melakukan hard-code animasi. Dalam contoh di bawah ini, kami menggunakan XML. (Untuk
mempelajari lebih lanjut cara menentukan animasi dalam kode aplikasi Anda, alih-alih XML, lihat
class AnimationSet
dan subclass Animation
lainnya.)
Petunjuk animasi menentukan transformasi yang Anda inginkan untuk terjadi, kapan terjadinya, dan berapa lama terjadinya agar animasi dapat diterapkan. Transformasi bisa berurutan atau bersamaan - misalnya, Anda dapat membuat konten TextView bergerak dari kiri ke kanan, lalu memutar 180 derajat, atau Anda dapat membuat teks bergerak dan berputar secara bersamaan. Setiap transformasi memerlukan sekumpulan parameter yang khusus untuk transformasi tersebut (ukuran awal dan ukuran akhir untuk perubahan ukuran, sudut awal dan sudut akhir untuk rotasi, dan sebagainya), dan juga serangkaian 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 yang mendahuluinya.
File XML animasi berada di direktori res/anim/
project Android
Anda. File harus memiliki elemen root tunggal: elemen root ini dapat berupa satu
<alpha>
, <scale>
, <translate>
,
<rotate>
, elemen interpolator, atau elemen <set>
yang menampung
grup elemen ini (yang dapat menyertakan <set>
lainnya). Secara default, semua
petunjuk animasi diterapkan secara bersamaan. Agar petunjuk animasi diterapkan secara berurutan, Anda harus
menentukan atribut startOffset
, seperti ditunjukkan dalam contoh di bawah.
XML dari salah satu ApiDemo 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 bergeser ke kanan.
Beberapa nilai, seperti pivotX, dapat ditentukan dalam kaitannya dengan objek itu sendiri atau dengan induknya. Pastikan menggunakan format yang tepat untuk apa yang Anda inginkan ("50" untuk 50% terhadap induk, atau "50%" untuk 50% terhadap objek 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
memberitahu transformasi untuk memulai dengan lambat lalu makin cepat. Setiap subclass memiliki nilai atribut yang dapat
diterapkan dalam XML.
Dengan XML ini disimpan sebagai hyperspace_jump.xml
di 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 dari startAnimation()
, Anda dapat menentukan waktu mulai untuk
animasi dengan
, lalu menetapkan animasi ke View dengan Animation.setStartTime()
.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 View yang menyimpan animasi Anda tidak akan otomatis menyesuaikan untuk mengakomodasi perubahan tersebut. 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.