4using System.Threading.Tasks;
5using Microsoft.Maui.Controls;
26 this.enterAnimation = EnterAnimation;
27 this.exitAnimation = ExitAnimation;
28 this.overlayAnimation = OverlayAnimation;
34 ArgumentNullException.ThrowIfNull(Context);
35 List<Task> Tasks =
new List<Task>(3);
37 if (this.enterAnimation is not
null && Entering is not
null)
38 Tasks.Add(this.enterAnimation.RunAsync(Entering, Context, Options, Token));
40 if (this.exitAnimation is not
null && Exiting is not
null)
41 Tasks.Add(this.exitAnimation.RunAsync(Exiting, Context, Options, Token));
43 if (this.overlayAnimation is not
null)
45 VisualElement Anchor = Entering ?? Exiting ??
throw new InvalidOperationException(
"Overlay animations require at least one visual element.");
46 Tasks.Add(this.overlayAnimation.RunAsync(Anchor, Context, Options, Token));
52 await Task.WhenAll(Tasks);
Options applied for an individual animation execution.
Represents a pair of animations used for transitions.
async Task RunAsync(VisualElement? Entering, VisualElement? Exiting, IAnimationContext Context, AnimationOptions? Options, CancellationToken Token)
Executes the transition animation for enter and exit elements. Task tracking execution.
TransitionAnimation(IViewAnimation? EnterAnimation, IViewAnimation? ExitAnimation, IViewAnimation? OverlayAnimation=null)
Initializes a new instance of the TransitionAnimation class.
Represents contextual information required when executing an animation.
Defines a transition animation executor.
Defines a view-based animation executor.