Можно ли вывести всплывающее окно просмотра анимации при выполнении асинхронной задачи? - PullRequest
0 голосов
/ 03 июля 2018

Я создал представление контента, и в этом представлении контента я вставил анимацию лотереи:

Я пытаюсь сделать это обычным видом анимации, чтобы я мог использовать его для нескольких асинхронных задач

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 голосов
/ 03 июля 2018

Если вы хотите показывать лотерейную анимацию во всплывающем окне, я рекомендую вам использовать великолепную библиотеку 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>

Здесь вы можете найти код для использования вашей новой всплывающей страницы.

...