乐蒂动画作为加载指示器-Xamarin.forms

乐蒂动画作为加载指示器-Xamarin.forms,xamarin.forms,Xamarin.forms,我有一个xamarin forms应用程序,其中包含一个使用微切图的饼图。该图的数据来自Web API。一切正常。每次graph从web API加载数据时都会有一些延迟。因此graph的出现也需要时间。我想做的是在图形出现之前使用乐蒂动画作为加载指示器。动画显示,但它会闪烁并加载图形 我所做的 protected override async void OnAppearing() { await LoadDynamicGraph();

我有一个xamarin forms应用程序,其中包含一个使用微切图的饼图。该图的数据来自Web API。一切正常。每次graph从web API加载数据时都会有一些延迟。因此graph的出现也需要时间。我想做的是在图形出现之前使用乐蒂动画作为加载指示器。动画显示,但它会闪烁并加载图形

我所做的

protected override async void OnAppearing()
    {              
        await LoadDynamicGraph();
    }

    private async Task LoadDynamicGraph()
    {
        await Task.Run(() =>
        {                                          
                    // Graph Loading API call code                          
                        if (GraphDataObj[0] != null)
                        {
                            Device.BeginInvokeOnMainThread(() =>
                            {

                                AnimationView.IsPlaying = false;
                                AnimationView.IsVisible = false;
                                Chart1.IsVisible = true;                                
                                foreach (var item in GraphDataObj[0].DailyScore)
                                {
                                    FirstGraphData = new List<ChartEntry>
                                    {
                                      new ChartEntry(float.Parse(item.CompletedItems))
                                    {

                                        Label = "Completed",                                           
                                       // ValueLabel = item.CompletedItems,
                                        Color = SKColor.Parse("#c90484"),
                                        TextColor = SKColor.Parse("#FFFFFF"),
                                    },

                                      new ChartEntry(float.Parse(item.TotalOpenItems))
                                    {
                                        Label = "Total ",
                                       // ValueLabel = item.TotalOpenItems,
                                        Color = SKColor.Parse("#00a8f3"),
                                        TextColor = SKColor.Parse("#FFFFFF"),
                                    }
                                    };
                                }
                                Chart1.Chart = new PieChart()
                                {
                                    Entries = FirstGraphData,
                                    BackgroundColor = SKColor.Parse("#002F4F4F")
                                };

                            });
                        }

        });

    }
我的xaml

  <Grid>
         <forms1:AnimationView 
                x:Name="AnimationView"                
                Animation="graphloading.json"       
                AutoPlay="True"
                Margin="10"              
                BackgroundColor="Transparent"                           
                VerticalOptions="FillAndExpand"
                HorizontalOptions="FillAndExpand" />    

                        <forms:ChartView x:Name="Chart1" isVisible="False"
                        HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>                     
                    </Grid>

我的Xaml.cs文件

protected override async void OnAppearing()
    {              
        await LoadDynamicGraph();
    }

    private async Task LoadDynamicGraph()
    {
        await Task.Run(() =>
        {                                          
                    // Graph Loading API call code                          
                        if (GraphDataObj[0] != null)
                        {
                            Device.BeginInvokeOnMainThread(() =>
                            {

                                AnimationView.IsPlaying = false;
                                AnimationView.IsVisible = false;
                                Chart1.IsVisible = true;                                
                                foreach (var item in GraphDataObj[0].DailyScore)
                                {
                                    FirstGraphData = new List<ChartEntry>
                                    {
                                      new ChartEntry(float.Parse(item.CompletedItems))
                                    {

                                        Label = "Completed",                                           
                                       // ValueLabel = item.CompletedItems,
                                        Color = SKColor.Parse("#c90484"),
                                        TextColor = SKColor.Parse("#FFFFFF"),
                                    },

                                      new ChartEntry(float.Parse(item.TotalOpenItems))
                                    {
                                        Label = "Total ",
                                       // ValueLabel = item.TotalOpenItems,
                                        Color = SKColor.Parse("#00a8f3"),
                                        TextColor = SKColor.Parse("#FFFFFF"),
                                    }
                                    };
                                }
                                Chart1.Chart = new PieChart()
                                {
                                    Entries = FirstGraphData,
                                    BackgroundColor = SKColor.Parse("#002F4F4F")
                                };

                            });
                        }

        });

    }
protected override async void OnAppearing()
{              
等待LoadDynamicGraph();
}
专用异步任务LoadDynamicGraph()
{
等待任务。运行(()=>
{                                          
//图形加载API调用代码
如果(GraphDataObj[0]!=null)
{
Device.beginInvokeMainThread(()=>
{
AnimationView.isplay=false;
AnimationView.IsVisible=false;
图表1.IsVisible=真;
foreach(GraphDataObj[0].DailyScore中的变量项)
{
FirstGraphData=新列表
{
新的图表条目(float.Parse(item.CompletedItems))
{
Label=“已完成”,
//ValueLabel=item.CompletedItems,
Color=SKColor.Parse(“#c90484”),
TextColor=SKColor.Parse(“#FFFFFF”),
},
新的图表条目(float.Parse(item.TotalOpenItems))
{
Label=“总计”,
//ValueLabel=item.TotalOpenItems,
Color=SKColor.Parse(“#00a8f3”),
TextColor=SKColor.Parse(“#FFFFFF”),
}
};
}
Chart1.Chart=new PieChart()
{
条目=FirstGraphData,
BackgroundColor=SKColor.Parse(#002F4F4F)
};
});
}
});
}
目前,动画只是简单地出现和去。我想让它显示一些时间,然后加载图表。非常感谢您的帮助。

设置此选项

AnimationView.IsPlaying = false;
AnimationView.IsVisible = false;
Chart1.IsVisible = true;
在你的功能结束时。它仍然会非常快。你可以试着设置一次计时器

      finish = true;
      Device.StartTimer(TimeSpan.FromSeconds(5), () =>
            {
                If(finish){
                    finish = false;
                    return true;}
                //there turn off your animation
                return false;
            });