如何在初始屏幕中应用Lottie动画?

时间:2018-07-13 00:28:38

标签: c# animation xamarin splash-screen lottie

我正在尝试在初始屏幕中使用Lottie动画。

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

<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方法来触发动画的开始,但是仍然无法正常工作。

1 个答案:

答案 0 :(得分:-1)

因此,您可以简化后面的代码,Play()返回一个PushAsync,因此您需要Task

await

对于XAML,您不希望启用循环,因为永远不会调用OnFinish处理程序。您可以提供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()); } } 处理程序,等等。最大的问题是,仅对vert / horz选项使用OnFinish不会提供视图的大小,请使用FillAndExpand尝试匹配包含的视图。

Center