Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
BounceInişlevi animasyonu en başta geri alır. - Kolaylaştırma
BounceOutişlevi animasyonu sona geri aktarır. - Kolaylaştırma
CubicInişlevi animasyonu yavaş bir şekilde hızlandırır. - Kolaylaştırma
CubicInOutişlevi başlangıçtaki animasyonu hızlandırır ve sonundaki animasyonu yavaşlatır. - Kolaylaştırma
CubicOutişlevi animasyonu hızla yavaşlatıyor. - Hareket
Linearhızı işlevi sabit bir hız kullanır ve varsayılan hareket hızı işlevidir. - Kolaylaştırma
SinInişlevi animasyonu sorunsuz bir şekilde hızlandırır. - Kolaylaştırma
SinInOutişlevi başlangıçtaki animasyonu sorunsuz bir şekilde hızlandırır ve sonundaki animasyonu sorunsuz bir şekilde yavaşlatır. - Kolaylaştırma
SinOutişlevi animasyonu sorunsuz bir şekilde yavaşlatır. - Kolaylaştırma
SpringInişlevi, animasyonların sonlara doğru çok hızlı bir şekilde hızlanmasına neden olur. - Kolaylaştırma
SpringOutiş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:
- Bağımsız değişken alan ve sonuç döndüren bir
doubledoubleyöntem oluşturun. - oluşturun
Func<double, double>. - Oluşturucunun bağımsız değişkeni
Easingolarak 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.