의 감속/가속 함수 Xamarin.Forms
Xamarin.Forms 에는 애니메이션이 실행될 때 속도를 향상하거나 느리게 하는 방법을 제어하는 전송 함수를 지정할 수 있는 Easing 클래스가 포함되어 있습니다. 이 문서에서는 미리 정의된 감속/가속 함수를 사용하는 방법과 사용자 지정 감속/가속 함수를 만드는 방법을 보여 줍니다.
이 클래스는 Easing
애니메이션에서 사용할 수 있는 여러 감속/가속 함수를 정의합니다.
- 감속/가속 함수는
BounceIn
시작 부분에서 애니메이션을 반송합니다. - 감속/가속 함수는
BounceOut
끝에 애니메이션을 튀깁니다. - 감속/가속 함수는
CubicIn
애니메이션을 천천히 가속화합니다. - 감속/가속 함수는
CubicInOut
시작 부분에서 애니메이션을 가속화하고 끝에 애니메이션을 감속합니다. - 감속/가속 함수는
CubicOut
애니메이션을 빠르게 감속합니다. - 감속/가속 함수는
Linear
일정한 속도를 사용하며 기본 감속/가속 함수입니다. - 감속/가속 함수는
SinIn
애니메이션을 원활하게 가속화합니다. - 감속/가속 함수는
SinInOut
시작 부분에서 애니메이션을 부드럽게 가속하고 끝에 있는 애니메이션을 부드럽게 감속합니다. - 감속/가속 함수는
SinOut
애니메이션을 부드럽게 감속합니다. SpringIn
감속/가속 함수를 사용하면 애니메이션이 끝으로 매우 빠르게 가속됩니다.SpringOut
감속/가속 함수를 사용하면 애니메이션이 끝으로 빠르게 감속됩니다.
In
및 Out
접미사는 애니메이션의 시작 부분, 끝 또는 둘 다에서 감속/가속 함수에서 제공하는 효과가 눈에 띄는지 여부를 나타냅니다.
또한 사용자 지정 감속/가속 함수를 만들 수 있습니다. 자세한 내용은 사용자 지정 감속/가속 함수를 참조 하세요.
감속/가속 함수 사용
클래스의 ViewExtensions
애니메이션 확장 메서드를 사용하면 다음 코드 예제와 같이 감속/가속 함수를 최종 메서드 매개 변수로 지정할 수 있습니다.
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);
애니메이션에 대해 감속/가속 함수를 지정하면 애니메이션 속도는 비선형이 되고 감속/가속 함수에서 제공하는 효과를 생성합니다. 애니메이션을 만들 때 감속/가속 함수를 생략하면 애니메이션이 선형 속도를 생성하는 기본 Linear
감속/가속 함수를 사용합니다.
참고 항목
Xamarin.Forms 5.0에는 감속/가속 함수의 문자열 표현을 적절한 Easing
열거형 멤버로 변환하는 형식 변환기가 포함되어 있습니다. 이 형식 변환기는 XAML에 설정된 형식 Easing
의 모든 속성에서 자동으로 호출됩니다.
클래스에서 ViewExtensions
애니메이션 확장 메서드를 사용하는 방법에 대한 자세한 내용은 단순 애니메이션을 참조 하세요. 감속/가속 함수는 클래스에서 Animation
사용할 수도 있습니다. 자세한 내용은 사용자 지정 애니메이션을 참조 하세요.
사용자 지정 감속/가속 함수
사용자 지정 감속/가속 함수를 만드는 세 가지 주요 방법이 있습니다.
- 인수를 사용하고
double
결과를 반환하는 메서드를 만듭니다double
. Func<double, double>
을 만듭니다.- 감속/가속 함수를 생성자에 대한 인수
Easing
로 지정합니다.
세 가지 경우 모두 사용자 지정 감속/가속 함수는 인수 0에 대해 0을 반환하고 인수가 1인 경우 1을 반환해야 합니다. 그러나 0과 1의 인수 값 사이에 모든 값을 반환할 수 있습니다. 이제 각 접근 방식이 차례로 논의됩니다.
사용자 지정 감속/가속 메서드
사용자 지정 감속/가속 함수는 다음 코드 예제에 설명된 대로 인수를 double
사용하고 결과를 반환 double
하는 메서드로 정의할 수 있습니다.
double CustomEase (double t)
{
return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}
await image.TranslateTo(0, 200, 2000, (Easing)CustomEase);
이 메서드는 CustomEase
들어오는 값을 0, 0.2, 0.4, 0.6, 0.8 및 1 값으로 자립니다. 따라서 인스턴스는 Image
원활하지 않고 개별 점프로 변환됩니다.
사용자 지정 감속/가속 Func
사용자 지정 감속/가속 함수는 다음 코드 예제에 설명된 대로
Func<double, double> CustomEaseFunc = t => 9 * t * t * t - 13.5 * t * t + 5.5 * t;
await image.TranslateTo(0, 200, 2000, CustomEaseFunc);
이 가속 함수는 CustomEaseFunc
빠르게 시작하고, 속도를 늦추고, 코스를 뒤집은 다음, 코스를 다시 반대로 전환하여 끝까지 빠르게 가속하는 감속/가속 함수를 나타냅니다. 따라서 인스턴스의 Image
전체 이동은 아래쪽이지만 애니메이션 중간에 일시적으로 방향을 반대로 바뀝니다.
사용자 지정 감속/가속 생성자
다음 코드 예제와 같이 사용자 지정 감속/가속 함수를 생성자에 대한 인수 Easing
로 정의할 수도 있습니다.
await image.TranslateTo (0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));
사용자 지정 감속/가속 함수는 생성자에 대한 Easing
람다 함수 인수로 지정되며 메서드를 사용하여 Math.Cos
메서드에 의해 Math.Exp
약화되는 느린 드롭 효과를 만듭니다. 따라서 인스턴스가 Image
최종 휴식 위치로 떨어지는 것처럼 보이도록 변환됩니다.
요약
이 문서에서는 미리 정의된 감속/가속 함수를 사용하는 방법과 사용자 지정 감속/가속 함수를 만드는 방법을 보여 줍니다. Xamarin.Forms 에는 Easing
애니메이션이 실행될 때 속도를 향상하거나 느리게 하는 방법을 제어하는 전송 함수를 지정할 수 있는 클래스가 포함되어 있습니다.