Animasi Tampilan

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

Animasi hitung nilai dapat melakukan 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 terdapat sebagai gambar latar, maka gambar latar akan diubah bersama dengan teks. animation package menyediakan semua class yang digunakan dalam animasi hitung nilai.

Urutan instruksi animasi menentukan animasi hitung nilai, yang didefinisikan oleh XML atau kode Android. Seperti halnya mendefinisikan tata letak, file XML direkomendasikan karena lebih mudah dibaca, dapat digunakan kembali, dan dapat ditukar daripada membuat {i>hard-coding<i} animasi. Dalam contoh di bawah ini, kami menggunakan XML. (Kepada mempelajari lebih lanjut cara mendefinisikan animasi dalam kode aplikasi Anda, sebagai ganti XML, lihat Class AnimationSet dan subclass Animation lainnya.)

Instruksi animasi menentukan transformasi yang Anda inginkan untuk terjadi, kapan akan terjadi, dan berapa lama waktu yang dibutuhkan untuk mengajukan permohonan. Transformasi dapat 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 kumpulan parameter khusus untuk transformasi tersebut (ukuran awal dan ukuran akhir untuk ukuran perubahan, sudut awal dan sudut akhir untuk rotasi, dan seterusnya), serta serangkaian (misalnya, waktu mulai dan durasi). Untuk melakukan beberapa transformasi secara bersamaan, beri mereka waktu mulai yang sama; agar berurutan, hitung waktu mulai ditambah durasi transformasi sebelumnya.

File XML animasi berada di direktori res/anim/ Android Anda proyek. File harus memiliki elemen {i>root<i} tunggal: ini akan berupa satu elemen <alpha>, <scale>, <translate>, <rotate>, elemen interpolator, atau elemen <set> yang menyimpan kelompok elemen ini (yang mungkin juga menyertakan <set>). Secara {i>default<i}, semua petunjuk animasi diterapkan secara bersamaan. Untuk membuatnya terjadi secara berurutan, Anda harus tentukan atribut startOffset, seperti yang ditunjukkan dalam contoh di bawah.

XML dari salah satu ApiDemo berikut digunakan untuk meregangkan, lalu memutar dan memutar objek View.

<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 relatif terhadap objek itu sendiri atau relatif dengan orang tua. Pastikan menggunakan format yang tepat untuk apa yang Anda inginkan ("50" untuk 50% relatif terhadap induk, atau "50%" sebesar 50% relatif terhadap dirinya 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 memerintahkan transformasi untuk memulainya dengan lambat dan dipercepat. Masing-masing memiliki nilai atribut yang dapat yang diterapkan dalam XML.

Dengan XML ini yang disimpan sebagai hyperspace_jump.xml dalam res/anim/ project Anda, 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 tetapkan 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 dapat bergerak atau mengubah ukuran, batas Tampilan yang menyimpan animasi tidak akan secara 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.