我正在尝试在初始屏幕中使用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方法来触发动画的开始,但是仍然无法正常工作。
答案 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