Xamanimation 1.3.0
dotnet add package Xamanimation --version 1.3.0
NuGet\Install-Package Xamanimation -Version 1.3.0
<PackageReference Include="Xamanimation" Version="1.3.0" />
paket add Xamanimation --version 1.3.0
#r "nuget: Xamanimation, 1.3.0"
// Install Xamanimation as a Cake Addin #addin nuget:?package=Xamanimation&version=1.3.0 // Install Xamanimation as a Cake Tool #tool nuget:?package=Xamanimation&version=1.3.0
Xamanimation - 为 Xamarin.Forms 提供动画库
Xamanimation 是一个为 Xamarin.Forms 设计的可移植库,旨在帮助开发者使用 动画。使用非常简单,从 C# 和 XAML 代码中直接使用。
我们可以通过一个 Behavior 在 XAML 中定义在加载时应用于一个可视元素的动画,或者在 XAML中使用触发器来执行动画,或者从 C# 代码中。
可用的动画
- 颜色
- FadeTo
- 翻转
- 心形
- 跳跃
- 旋转
- 缩放
- 震动
- 平移
- 旋转门
安装
要安装 Xamanimation,请在包管理器控制台中运行以下命令。
PM> Install-Package Xamanimation
直接从 XAML 使用动画
此库的主要优势之一是可以从 XAML 中使用动画。我们必须使用以下命名空间
xmlns:xamanimation="clr-namespace:Xamanimation;assembly=Xamanimation"
让我们为 BoxView 添加动画
<BoxView
x:Name="FadeBox"
HeightRequest="120"
WidthRequest="120"
Color="Blue" />
我们可以在 XAML 中直接定义动画(作为应用或页面资源)
<xamanimation:FadeToAnimation
x:Key="FadeToAnimation"
Target="{x:Reference FadeBox}"
Duration="2000"
Opacity="0"/>
使用 xamanimation 命名空间,我们可以访问整个库的动画集。在所有这些中,有许多共同的 参数,例如
- 目标:指示我们将应用动画的可视元素。
- 持续时间:动画的持续时间(以毫秒为单位)。
根据使用的动画类型,我们会有更多参数来自定义特定的动画。例如,在淡入动画的情况下,我们将有一个不透明度属性来设置如何修改不透明度。
要启动动画,我们有以下两种选择
- 触发器:调用 BeginAnimation,它允许我们在条件满足时启动动画。
- 行为: 我们有一个名为 BeginAnimation 的行为,可以将该行为关联到视觉元素,以便在指示所需动画时,当元素加载发生时可以启动相同的动画。
我们可以通过按钮的 Clicked 事件使用提供的触发器来启动之前的动画
<Button
Text="Fade">
<Button.Triggers>
<EventTrigger Event="Clicked">
<xamanimation:BeginAnimation
Animation="{StaticResource FadeToAnimation}" />
</EventTrigger>
</Button.Triggers>
</Button>
我们还有一个概念叫做 Storyboard,它是一组可以在时间内执行的动画
<xamanimation:StoryBoard
x:Key="StoryBoard"
Target="{x:Reference StoryBoardBox}">
<xamanimation:ScaleToAnimation Scale="2"/>
<xamanimation:ShakeAnimation />
</xamanimation:StoryBoard>
使用 C#
与我们可以从 XAML 使用库中的动画一样,我们也可以从 C# 代码中做同样的事情。我们有一个名为 Animate 的扩展方法,该方法预计将包含任何可用的动画实例。
如果我们想对名为 AnimationBox 的 BoxView 进行动画处理
<BoxView
x:Name="AnimationBox"
HeightRequest="120"
WidthRequest="120"
Color="Blue" />
访问元素,使用预期的 Animate 方法
AnimationBox.Animate(new HeartAnimation());
控制动画
您可以使用 Duration 属性来控制动画的持续时间。以及要使用哪种类型的 Easing。现在还添加了一些新属性,比如
延迟 在播放动画之前添加延迟。
<img src="Media/xamanimation-delayed.gif" Width="250" />
无限重复 您现在可以根据需要创建无限动画。
<img src="Media/xamanimation-repeat.gif" Width="250" />
触发器!
触发器允许您在 XAML 中根据事件或属性更改声明性地启动动画。
<Entry
FontSize="16"
BackgroundColor="LightGray">
<Entry.Triggers>
<Trigger TargetType="Entry" Property="IsFocused" Value="True">
<Trigger.EnterActions>
<xamanimation:AnimateDouble TargetProperty="Entry.FontSize" To="24"/>
<xamanimation:AnimateColor TargetProperty="Entry.TextColor" To="Red"/>
<xamanimation:AnimateColor TargetProperty="VisualElement.BackgroundColor" To="Yellow" Delay="1000"/>
<xamanimation:AnimateDouble TargetProperty="VisualElement.Rotation" To="12" Duration="100"/>
</Trigger.EnterActions>
<Trigger.ExitActions>
<xamanimation:AnimateDouble TargetProperty="{x:Static Entry.FontSizeProperty}" To="16"/>
<xamanimation:AnimateColor TargetProperty="{x:Static Entry.TextColorProperty}" To="Black"/>
<xamanimation:AnimateColor TargetProperty="{x:Static VisualElement.BackgroundColorProperty}" To="LightGray"/>
<xamanimation:AnimateDouble TargetProperty="{x:Static VisualElement.RotationProperty}" To="0"/>
</Trigger.ExitActions>
</Trigger>
</Entry.Triggers>
</Entry>
您可以动画化任何类型为 Int、Double、Color、Thickness 或 CornerRadius 的属性。可用选项包括
- AnimateInt
- AnimateColor
- AnimateCornerRadius
- AnimateDouble
- AnimateThickness
进度动画
有时您需要根据随时间变化的价值进行动画处理,例如用户交互的结果。
一个常见的场景是使用滚动。视差效果等。
<BoxView
BackgroundColor="Red"
CornerRadius="24, 24, 0, 0">
<VisualElement.Behaviors>
<xamanimation:AnimateProgressColor
TargetProperty="VisualElement.BackgroundColor"
Progress="{Binding ScrollY, Source={x:Reference ScrollBehavior}}"
Minimum="0"
Maximum="200"
From="Black"
To="Red"/>
<xamanimation:AnimateProgressCornerRadius
TargetProperty="BoxView.CornerRadius"
Progress="{Binding ScrollY, Source={x:Reference ScrollBehavior}}"
Minimum="0"
Maximum="200"
From="24, 24, 0, 0"
To="0,0,0,0"/>
</VisualElement.Behaviors>
</BoxView>
可用选项
- AnimateProgressInt
- AnimateProgressColor
- AnimateProgressCornerRadius
- AnimateProgressDouble
- AnimateProgressThickness
过渡
当控件首次出现时,提供动画过渡行为。您可以使用此功能于单个对象或对象的容器。在后一种情况下,子元素将按顺序进入视图而不是同时全部进入。
<FlexLayout
Wrap="Wrap"
Direction="Row"
JustifyContent="Start"
AlignItems="Start"
AlignContent="Start">
<FlexLayout.Behaviors>
<xamanimation:EntranceTransition
Duration="1000"/>
</FlexLayout.Behaviors>
</FlexLayout>
产品 | 版本 兼容的和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET Framework | net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- Xamarin.Forms (>= 4.1.0.581479)
NuGet 包
此包未由任何 NuGet 包使用。
GitHub 仓库 (3)
显示依赖 Xamanimation 的前 3 个最受欢迎的 GitHub 仓库
仓库 | 星数 |
---|---|
microsoft/SmartHotel360-Mobile
SmartHotel360 Mobile
|
|
davidortinau/Xappy
一款追踪 Xamarin 新闻并探索 .NET 移动开发者的所有优点移动应用的移动应用
|
|
davidortinau/FlyMe
微软 Ignite 2019 上展示的 3 个大会演示的 Xamarin.Forms 示例
|