Meringankan Functions di Xamarin.Forms
Xamarin.Forms termasuk kelas Pelingan yang memungkinkan Anda menentukan fungsi transfer yang mengontrol bagaimana animasi mempercepat atau memperlambat saat dijalankan. Artikel ini menunjukkan cara menggunakan fungsi pelingan yang telah ditentukan sebelumnya, dan cara membuat fungsi pelingan kustom.
Kelas Easing
mendefinisikan sejumlah fungsi pengurangan yang dapat dikonsumsi oleh animasi:
- Fungsi
BounceIn
pelingan memantulkan animasi di awal. - Fungsi
BounceOut
pelingan memantulkan animasi di akhir. - Fungsi
CubicIn
pelingan perlahan mempercepat animasi. - Fungsi
CubicInOut
pelingan mempercepat animasi di awal, dan mempercepat animasi di akhir. - Fungsi
CubicOut
pelingan dengan cepat mempercepat animasi. - Fungsi
Linear
pelingan menggunakan kecepatan konstanta, dan merupakan fungsi pelingan default. - Fungsi
SinIn
pelingan mempercepat animasi dengan lancar. - Fungsi
SinInOut
pelingan mempercepat animasi di awal dengan lancar, dan mempercepat animasi di akhir dengan lancar. - Fungsi
SinOut
pelingan mempercepat animasi dengan lancar. - Fungsi
SpringIn
pelonggaran menyebabkan animasi sangat cepat berakselerasi menuju akhir. - Fungsi
SpringOut
pelonggaran menyebabkan animasi cepat terdecelerasi menjelang akhir.
Akhiran In
dan Out
menunjukkan apakah efek yang disediakan oleh fungsi kemudahan terlihat di awal animasi, di akhir, atau keduanya.
Selain itu, fungsi penghapusan kustom dapat dibuat. Untuk informasi selengkapnya, lihat Fungsi Penguraian Kustom.
Mengkonsumsi Fungsi Pelingan
Metode ekstensi animasi di ViewExtensions
kelas memungkinkan fungsi pengurangan ditentukan sebagai parameter metode akhir, seperti yang ditunjukkan dalam contoh kode berikut:
await image.TranslateTo(0, 200, 2000, Easing.BounceIn);
await image.ScaleTo(2, 2000, Easing.CubicIn);
await image.RotateTo(360, 2000, Easing.SinInOut);
await image.ScaleTo(1, 2000, Easing.CubicOut);
await image.TranslateTo(0, -200, 2000, Easing.BounceOut);
Dengan menentukan fungsi pelingan untuk animasi, kecepatan animasi menjadi non-linier dan menghasilkan efek yang disediakan oleh fungsi pelingan. Menghilangkan fungsi pelingan saat membuat animasi menyebabkan animasi menggunakan fungsi pelingan default Linear
, yang menghasilkan kecepatan linier.
Catatan
Xamarin.Forms 5.0 menyertakan pengonversi jenis yang mengonversi representasi string dari fungsi pelingkatan ke anggota enumerasi yang sesuai Easing
. Pengonversi jenis ini secara otomatis dipanggil pada properti jenis Easing
apa pun yang diatur dalam XAML.
Untuk informasi selengkapnya tentang menggunakan metode ekstensi animasi di ViewExtensions
kelas, lihat Animasi Sederhana. Fungsi pengurangan juga dapat dikonsumsi oleh Animation
kelas . Untuk informasi selengkapnya, lihat Animasi Kustom.
Fungsi Permudah Kustom
Ada tiga pendekatan utama untuk membuat fungsi penguraian kustom:
- Buat metode yang mengambil
double
argumen, dan mengembalikan hasilnyadouble
. - Buat
Func<double, double>
. - Tentukan fungsi pelunasan sebagai argumen ke
Easing
konstruktor.
Dalam ketiga kasus, fungsi pemisahan kustom harus mengembalikan 0 untuk argumen 0, dan 1 untuk argumen 1. Namun, nilai apa pun dapat dikembalikan antara nilai argumen 0 dan 1. Setiap pendekatan sekarang akan dibahas secara bergantian.
Metode Pemisahan Kustom
Fungsi pengurangan kustom dapat didefinisikan sebagai metode yang mengambil double
argumen, dan mengembalikan hasilnya, seperti yang double
ditunjukkan dalam contoh kode berikut:
double CustomEase (double t)
{
return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}
await image.TranslateTo(0, 200, 2000, (Easing)CustomEase);
Metode ini CustomEase
memotong nilai masuk ke nilai 0, 0,2, 0,4, 0,6, 0,8, dan 1. Oleh karena itu, Image
instans diterjemahkan dalam lompatan diskrit, bukan dengan lancar.
Func Permudah Kustom
Fungsi pengurangan kustom juga dapat didefinisikan sebagai , seperti yang Func<double, double>
ditunjukkan dalam contoh kode berikut:
Func<double, double> CustomEaseFunc = t => 9 * t * t * t - 13.5 * t * t + 5.5 * t;
await image.TranslateTo(0, 200, 2000, CustomEaseFunc);
mewakili CustomEaseFunc
fungsi pelonggaran yang dimulai dengan cepat, melambat dan membalikkan arah, dan kemudian membalikkan arah lagi untuk mempercepat dengan cepat menuju akhir. Oleh karena itu, sementara pergerakan Image
keseluruhan instans ke bawah, itu juga untuk sementara membalikkan kursus setengah jalan melalui animasi.
Konstruktor Pelunasan Kustom
Fungsi pelingan kustom juga dapat didefinisikan sebagai argumen ke Easing
konstruktor, seperti yang ditunjukkan dalam contoh kode berikut:
await image.TranslateTo (0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));
Fungsi pelingan kustom ditentukan sebagai argumen fungsi lambda ke Easing
konstruktor, dan menggunakan Math.Cos
metode untuk membuat efek penurunan lambat yang dibasahi oleh Math.Exp
metode . Oleh karena itu, instans diterjemahkan Image
sehingga tampaknya turun ke tempat peristirahatan terakhirnya.
Ringkasan
Artikel ini menunjukkan cara menggunakan fungsi pelingan yang telah ditentukan sebelumnya, dan cara membuat fungsi pelingan kustom. Xamarin.FormsEasing
termasuk kelas yang memungkinkan Anda menentukan fungsi transfer yang mengontrol bagaimana animasi mempercepat atau memperlambat saat dijalankan.