c# - 如何在启动画面中应用 Lottie 动画?

标签 c# animation xamarin splash-screen lottie

我正在尝试在启动画面中使用 Lottie 动画。

我创建了一个包含我的 AnimationView 的新 xaml 页面:

<StackLayout>
    <forms:AnimationView 
        x:Name="SplashView" 
        Animation="hello.json"
        Loop="true"
        AutoPlay="true"
        IsEnabled="True"
        IsPlaying="True"
        IsVisible="True"
        VerticalOptions="Center" 
        HorizontalOptions="Center" />
</StackLayout>

当应用程序启动时,MainPage 应该是包含 AnimationView 的页面。我添加了一个事件“SplashView.OnFinish”,因此当动画完成时,使用 NavigationPage.PushAsync 将页面更改为我的主页。

下面是代码

public SplashScreen ()
{
    InitializeComponent ();
    NavigationPage.SetHasNavigationBar(this, false);

    SplashView.Play();
    SplashView.OnFinish += SplashView_OnFinish;
}

protected override void OnAppearing()
{
    base.OnAppearing();
    SplashView.Play();
}

private void SplashView_OnFinish(object sender, EventArgs e)
{
    Navigation.PushAsync(new MainPage());
}

一切正常,但我看不到动画,只有一个白页。

Navigation.PushAsync 有效,但动画不显示。

我尝试了 OnAppearing 方法来触发我的动画开始,但仍然不起作用。

最佳答案

所以你可以简化代码隐藏,PushAsync返回一个Task,所以你需要await它。

public partial class SplashPage : ContentPage
{
    public SplashPage()
    {
        InitializeComponent();
        NavigationPage.SetHasNavigationBar(this, false);
    }

    async void SplashView_OnFinish(object sender, EventArgs e)
    {
        await Navigation.PushAsync(new MainPage());
    }
}

对于 XAML,您不希望启用循环,因为永远不会调用 OnFinish 处理程序。您可以提供 OnFinish 处理程序等...最大的问题是仅对 vert/horz 选项使用 Center 不会为 View 提供大小,请使用 FillAndExpand 尝试匹配包含的 View 。

<forms:AnimationView
    x:Name="SplashView"
    Animation="hello.json"
    Loop="false" 
    AutoPlay="true"
    OnFinish="SplashView_OnFinish"
    VerticalOptions="FillAndExpand" 
    HorizontalOptions="FillAndExpand" />

关于c# - 如何在启动画面中应用 Lottie 动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316170/

相关文章:

c# - 用于在 C# 中选择的 SQL 查询生成器

javascript - 将变量放入return中确认()

java - 动画完成后删除 View

xamarin - Mvvmcross:无法为绑定(bind) TextColor 创建目标绑定(bind)

Xamarin 形成边距

c# - 编码的 ui 控件轮询而不是等待控件存在

c# - 错误 : The type or namespace AdvancedTextBoundary could not be found

javascript - d3 动画的持续时间

ios - UIButton 标签在选择时不尊重先前动画的完成处理程序设置的文本

android - Xamarin、C#、Google map fragment 不响应任何命令。 (即移动相机)