Aracılığıyla paylaş


'da İşlevleri Kolaylaştırma Xamarin.Forms

Xamarin.Forms , animasyonların çalışırken nasıl hızlandığını veya yavaşladığını denetleyebilen bir aktarım işlevi belirtmenize olanak tanıyan bir Easing sınıfı içerir. Bu makalede, önceden tanımlanmış kolaylaştırma işlevlerinin nasıl tüketilmesi ve özel kolaylaştırma işlevlerinin nasıl oluşturulacağı gösterilmektedir.

Easing sınıfı, animasyonlar tarafından kullanılabilecek bir dizi kolaylaştırma işlevi tanımlar:

  • Kolaylaştırma BounceIn işlevi animasyonu en başta geri alır.
  • Kolaylaştırma BounceOut işlevi animasyonu sona geri aktarır.
  • Kolaylaştırma CubicIn işlevi animasyonu yavaş bir şekilde hızlandırır.
  • Kolaylaştırma CubicInOut işlevi başlangıçtaki animasyonu hızlandırır ve sonundaki animasyonu yavaşlatır.
  • Kolaylaştırma CubicOut işlevi animasyonu hızla yavaşlatıyor.
  • Hareket Linear hızı işlevi sabit bir hız kullanır ve varsayılan hareket hızı işlevidir.
  • Kolaylaştırma SinIn işlevi animasyonu sorunsuz bir şekilde hızlandırır.
  • Kolaylaştırma SinInOut işlevi başlangıçtaki animasyonu sorunsuz bir şekilde hızlandırır ve sonundaki animasyonu sorunsuz bir şekilde yavaşlatır.
  • Kolaylaştırma SinOut işlevi animasyonu sorunsuz bir şekilde yavaşlatır.
  • Kolaylaştırma SpringIn işlevi, animasyonların sonlara doğru çok hızlı bir şekilde hızlanmasına neden olur.
  • Kolaylaştırma SpringOut işlevi animasyonu hızla sona doğru yavaşlatmaya neden olur.

In ve Out sonekleri, animasyonun başında, sonunda veya her ikisinde de kolaylaştırma işlevi tarafından sağlanan efektin fark edilebilir olup olmadığını belirtir.

Ayrıca, özel kolaylaştırma işlevleri oluşturulabilir. Daha fazla bilgi için bkz . Özel Kolaylaştırma İşlevleri.

Bir Kolaylaştırma İşlevi Kullanma

sınıfındaki ViewExtensions animasyon uzantısı yöntemleri, aşağıdaki kod örneğinde gösterildiği gibi son yöntem parametresi olarak bir kolaylaştırma işlevinin belirtilmesine izin verir:

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);

Animasyon için bir kolaylaştırma işlevi belirterek, animasyon hızı doğrusal değildir ve kolaylaştırma işlevi tarafından sağlanan efekti üretir. Animasyon oluştururken bir kolaylaştırıcı işlevin atlanması, animasyonda doğrusal hız oluşturan varsayılan Linear kolaylaştırma işlevinin kullanılmasına neden olur.

Not

Xamarin.Forms 5.0, bir kolaylaştırma işlevinin dize gösterimini uygun Easing numaralandırma üyesine dönüştüren bir tür dönüştürücüsü içerir. Bu tür dönüştürücü, XAML'de ayarlanan tür Easing özelliklerinde otomatik olarak çağrılır.

Sınıftaki animasyon uzantısı yöntemlerini ViewExtensions kullanma hakkında daha fazla bilgi için bkz . Basit Animasyonlar. Kolaylaştırma işlevleri de sınıfı tarafından Animation kullanılabilir. Daha fazla bilgi için bkz . Özel Animasyonlar.

Özel Kolaylaştırma İşlevleri

Özel bir kolaylaştırma işlevi oluşturmaya yönelik üç ana yaklaşım vardır:

  1. Bağımsız değişken alan ve sonuç döndüren bir double double yöntem oluşturun.
  2. oluşturun Func<double, double>.
  3. Oluşturucunun bağımsız değişkeni Easing olarak easing işlevini belirtin.

Her üç durumda da özel kolaylaştırma işlevi 0 bağımsız değişkeni için 0, 1 bağımsız değişkeni için 1 döndürmelidir. Ancak, 0 ve 1 bağımsız değişken değerleri arasında herhangi bir değer döndürülebilir. Her yaklaşım artık sırayla tartışılacaktır.

Özel Kolaylaştırma Yöntemi

Özel bir kolaylaştırma işlevi, aşağıdaki kod örneğinde gösterildiği gibi bağımsız değişken alan ve sonuç döndüren bir double double yöntem olarak tanımlanabilir:

double CustomEase (double t)
{
  return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}

await image.TranslateTo(0, 200, 2000, (Easing)CustomEase);

CustomEase yöntemi, gelen değeri 0, 0,2, 0,4, 0,6, 0,8 ve 1 değerlerine kısaltıyor. Bu nedenle, Image örnek sorunsuz bir şekilde değil, ayrı atlamalarla çevrilir.

Özel Kolaylaştırma Func

Özel bir kolaylaştırma işlevi, aşağıdaki kod örneğinde gösterildiği gibi olarak Func<double, double>da tanımlanabilir:

Func<double, double> CustomEaseFunc = t => 9 * t * t * t - 13.5 * t * t + 5.5 * t;
await image.TranslateTo(0, 200, 2000, CustomEaseFunc);

hızlı CustomEaseFunc başlayan, yavaşlayan ve rotayı tersine çeviren ve ardından hızla sona doğru hızlanmak için rotayı yeniden tersine çeviren bir kolaylaştırma işlevini temsil eder. Bu nedenle, örneğin genel hareketi Image aşağı doğruyken, animasyonun ortasındaki rotayı geçici olarak tersine çevirir.

Özel Kolaylaştırıcı Oluşturucu

Özel bir kolaylaştırma işlevi, aşağıdaki kod örneğinde gösterildiği gibi oluşturucunun Easing bağımsız değişkeni olarak da tanımlanabilir:

await image.TranslateTo (0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));

Özel kolaylaştırma işlevi oluşturucuya Easing bir lambda işlevi bağımsız değişkeni olarak belirtilir ve yöntemi tarafından Math.Exp sönümlenen bir yavaş bırakma efekti oluşturmak için yöntemini kullanırMath.Cos. Bu nedenle, Image örnek son dinlenme yerine bırakılıyor gibi görünecek şekilde çevrilir.

Özet

Bu makalede, önceden tanımlanmış kolaylaştırma işlevlerinin nasıl kullanacağı ve özel kolaylaştırma işlevlerinin nasıl oluşturulacağı gösterilmiştir. Xamarin.FormsEasing, animasyonların çalışırken nasıl hızlandığını veya yavaşladığını denetleyebilen bir aktarım işlevi belirtmenize olanak tanıyan bir sınıf içerir.