请求异步任务时是否可以弹出抽签动画视图

时间:2018-07-03 14:01:28

标签: xaml xamarin xamarin.forms lottie

我创建了一个内容视图,并在该内容视图中插入了很多动画:

我正在尝试使其成为常见的动画视图,以便可以将其用于多个异步任务

LoadingAnimation.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"
             xmlns:lottie="clr-namespace:Lottie.Forms;assembly=Lottie.Forms"
             x:Class="Fit_Plans.Views.Common.LoadingAnimation">
  <ContentView.Content>
      <StackLayout>
          <lottie:AnimationView
              Grid.Column="0"
              Margin="-20"
              x:Name="LoadingAnimationView"
              Animation="loading_animation.json"

              AutoPlay="false"
              HeightRequest="160"
              WidthRequest="160"
              VerticalOptions="FillAndExpand"
              HorizontalOptions="FillAndExpand"/>
        </StackLayout>
  </ContentView.Content>
</ContentView>

现在在我的SomeView.Xaml.cs

 async protected override void OnAppearing()
        {
            Product produits = new Product();          
            if(getListProduit ==null || getListProduit.Count<=0)
            {  
                getListProduit = await produits.loadMenuAsync(api, siteUrl);
                PopulateProductsLists(getListProduit);
            }
            base.OnAppearing();

        }

您会注意到我有一个待处理的任务:

getListProduit = await produits.loadMenuAsync(api, siteUrl);

是否可以将我的乐透动画弹出动画animation.jason,并在完成任务后关闭弹出窗口?或者,做这种事情的最好方法是什么?

1 个答案:

答案 0 :(得分:2)

如果要在弹出窗口中显示抽奖动画,建议您使用很棒的Rg.Plugins.Popup库。您可以从nuget获取它,然后创建一个弹出页面,在其中应添加您的抽奖动画(与上面的操作相同)。这样,您将可以重复使用此弹出动画页面。

弹出页面的XAML类似于以下内容:

<pages:PopupPage 
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"
    xmlns:animations="clr-namespace:Rg.Plugins.Popup.Animations;assembly=Rg.Plugins.Popup"
    x:Class="MyProject.MyPopupPage">
    <!--You can set an animation in the xaml file or in the csharp code behind-->
    <pages:PopupPage.Animation>
        <animations:ScaleAnimation 
            PositionIn="Center"
            PositionOut="Center"
            ScaleIn="1.2"
            ScaleOut="0.8"
            DurationIn="400"
            DurationOut="300"
            EasingIn="SinOut"
            EasingOut="SinIn"
            HasBackgroundAnimation="True"/>
    </pages:PopupPage.Animation>
    <!--You can use any elements here which are extended from Xamarin.Forms.View-->
     <lottie:AnimationView
          Grid.Column="0"
          Margin="-20"
          x:Name="LoadingAnimationView"
          Animation="loading_animation.json"

          AutoPlay="true"
          HeightRequest="160"
          WidthRequest="160"
          VerticalOptions="FillAndExpand"
          HorizontalOptions="FillAndExpand"/>
</pages:PopupPage>

Here,您可以找到使用新弹出页面的代码。