Bagikan melalui


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:

  1. Buat metode yang mengambil double argumen, dan mengembalikan hasilnya double .
  2. Buat Func<double, double>.
  3. 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.