尝试在Android上播放动画时,动画会正确显示并播放,但是,在iOS上,动画不会显示。
调用element.IsPlaying
时,返回值为true。
Lottie已在android和iOS实施中正确配置,文件位于android和ios的资产和根项目文件夹中,并且设置了正确的构建操作。
最近3个小时,我一直在寻找无济于事的答案,并寻求帮助。
代码:
public class xxx : ContentPage {
AnimationView element = new AnimationView();
public xxx()
{
element = new AnimationView() {
Loop = true,
AutoPlay = true,
Animation = "splashyloader.json",
WidthRequest = 400,
HeightRequest = 400,
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
IsVisible = true,
Speed=1
};
}
protected override void OnAppearing(){
element.Animation = "splashyloader.json";
element.Play();
}
}
答案 0 :(得分:0)
经过调查,我确定大多数动画是从使用XAML构造的AnimationView中播放的。布拉德·迪克森(Brad Dixon)提出了使用XAML创建ContentView并为Lottie Animation构造自定义视图的建议,然后可以以编程方式毫无问题地调用该视图。
一旦实施了初步测试表明此方法有效,则进一步的测试表明我尝试使用的主要Lottie JSON动画文件在iOS上不起作用(建议可能损坏)。
这似乎起作用,但实际上并不是最佳设置。希望将来的Lottie版本将使它过时。
AnimatingView.xaml
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="FoodMono.Views.AnimatingView" xmlns:forms="clr-namespace:Lottie.Forms;assembly=Lottie.Forms">
<ContentView.Content>
<forms:AnimationView x:Name="animation" Loop="True" AutoPlay="True" HeightRequest="300" WidthRequest="300" Speed="1" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Animation="5stars.json" />
</ContentView.Content>
</ContentView>
AnimatingView.xaml.cs
public partial class AnimatingView : ContentView
{
string animationName = null;
public AnimatingView(string AnimationName, bool loop=true, bool autostart=true)
{
InitializeComponent();
animationName = AnimationName;
animation.Animation = AnimationName;
if(!loop)
animation.Loop = loop;
if(!autostart)
animation.AutoPlay = autostart;
}
protected override void OnParentSet()
{
Console.WriteLine(animation.IsPlaying);
this.Start();
Console.WriteLine(animation.IsPlaying);
base.OnParentSet();
}
public void Start()
{
animation.Play();
}
public void Stop()
{
animation.AbortAnimation(animationName);
}
}
答案 1 :(得分:0)
将您的AnimationView放在自定义控件/ ContentView中,然后以这种方式使用它。带有XAML的容器将使其按预期工作。