|  Xamarin 
		Forms  -  Aplicando 3 Animações populares | 
|  | Neste artigo vou mostrar como aplicar três animações bem populares em aplicações Xamarin Forms usando o Visual Studio com Xamarin e a linguagem C#. | 
O Xamarin.Forms inclui sua própria infraestrutura de animação que é bem fácil de usar para criar animações simples, sendo também versátil o suficiente para criar animações complexas.
Eu já tratei das animações do Xamarin forms nestes artigos:
Hoje veremos 3 animações bem populares que podemos usar em aplicações Xamarin Forms :
Recursos usados:
Criando o projeto no Visual Studio 2017 Community
Abra o VS 2017 Community e clique em New Project e a seguir escolha Cross Platform -> Mobile App (Xamarin.Forms) e informe o nome XF_Animacao1;
A seguir selecione a Plataforma (eu marquei somente Android) e escolha a estratégia de compartilhamento que será .NET Standard.
|  | 
Clique no botão OK.
Pronto, nosso projeto já esta criado.
Vamos criar uma pasta Views no projeto onde vamos incluir as Views usadas no projeto.
Definindo o código inicial
Abra o arquivo App.cs e altere o código conforme abaixo:
| using Xamarin.Forms;namespace XF_Bindable_Spinner
{
    public class App : Application
    {
        public App()
        {
            MainPage = new NavigationPage(new MainPage());
        }
       ...
} | 
Aqui definimos a página MainPage como a página que vai iniciar a nossa aplicação.
Definindo o código da MainPage
Abra o arquivo MainPage.xaml e inclua 3 botões de comando (Buttons) definindo em cada um um evento Clicked a partir do qual iremos chamar as outras páginas do projeto:
| <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XF_Animacao1"
             x:Class="XF_Animacao1.MainPage"
             Title="Três Exemplos de Animações">    <StackLayout>        <Button x:Name="btnAnima1" Text="Shake Animation" BackgroundColor="Red" WidthRequest="150"  
                TextColor="Black"  Clicked="ShakePageClick" Margin="25" />
        <Button x:Name="btnAnima2" Text="Flip Animation" BackgroundColor="#0997d3" WidthRequest="150" 
                TextColor="Black"  Clicked="FlipPageClick" Margin="25" />
        <Button x:Name="btnAnima3" Text="Layout Animation" BackgroundColor="Green" WidthRequest="150" 
                TextColor="Black" Clicked="LayoutPageClick" Margin="25" />    </StackLayout></ContentPage> | 
Agora abra o arquivo MainPage.xaml.cs e defina o código para os eventos de cada um dos Buttons:
| using System;
using Xamarin.Forms;
using XF_Animacao1.Views;namespace XF_Animacao1
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }        private async void ShakePageClick(object sender, EventArgs e)
        {
            await Navigation.PushAsync(new ShakePage());
        }        private async void FlipPageClick(object sender, EventArgs e)
        {
            await Navigation.PushAsync(new FlipPage());
        }        private async void LayoutPageClick(object sender, EventArgs e)
        {
            await Navigation.PushAsync(new LayoutPage());
        }
    }
} | 
Neste código usamos o método PushAsync() para navegar para as páginas onde iremos aplicar as animações.
Criando as páginas das animações
Na pasta Views vamos incluir 3 Views do tipo Content Page via opção:
Definindo os seguintes nomes para cada View:
1- Definindo a view ShakePage
Abra o arquivo ShakePage.xaml e inclua o código abaixo:
| <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XF_Animacao1.Views.ShakePage"
             Title="Animação - Chacoalhar">
    <ContentPage.Content>
        <StackLayout HorizontalOptions="Center" VerticalOptions="Center">
            <Button x:Name="btnChacoalhar" Text="Chacoalhar" BackgroundColor="#00a4ef" WidthRequest="100"
                    TextColor="Black"  Clicked="ChacoalhaClicked" Margin="25" />
            <Entry x:Name="entryTexto" Placeholder="Me chacoalha... !" BackgroundColor="FloralWhite" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage> | 
Agora abra o arquivo ShakePage.xaml.cs e inclua o código a seguir:
| using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;namespace XF_Animacao1.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class ShakePage : ContentPage
    {
        public ShakePage ()
        {
	InitializeComponent ();
        }        private async void ChacoalhaClicked(object sender, EventArgs e)
        {
            uint timeout = 50;
            await entryTexto.TranslateTo(-15, 0, timeout);
            await entryTexto.TranslateTo(15, 0, timeout);
            await entryTexto.TranslateTo(-10, 0, timeout);
            await entryTexto.TranslateTo(10, 0, timeout);
            await entryTexto.TranslateTo(-5, 0, timeout);
            await entryTexto.TranslateTo(5, 0, timeout);
            entryTexto.TranslationX = 0;
        }
    }
} | 
2- Definindo a view FlipPage
Abra o arquivo FlipPage.xaml e digite o código abaixo:
| <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XF_Animacao1.Views.FlipPage"
             Title="Animação - Girar">
    <ContentPage.Content>
        <StackLayout VerticalOptions="Center">
            <Button x:Name="btnFlip1" Text="Girar" HorizontalOptions="Center" WidthRequest="250" 
                    BackgroundColor="Red" TextColor="Black" FontSize="40" Clicked="bntFlipClick" />
            <Button x:Name="btnFlip2" Text="Gire-me..." HorizontalOptions="Center" BackgroundColor="Green" 
                    WidthRequest="250" TextColor="Black" FontSize="40" IsVisible="false" Clicked="bntFlipClick" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage> | 
Abra o arquivo FlipPage.xaml.cs e inclua o código abaixo:
| using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;namespace XF_Animacao1.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class FlipPage : ContentPage
    {
        public FlipPage ()
        {
	InitializeComponent ();
        }        private async void bntFlipClick(object sender, EventArgs e)
        {
            uint timeout = 500;
            if (btnFlip1.IsVisible)
            {
                btnFlip2.RotationY = -270;
                await btnFlip1.RotateYTo(-90, timeout, Easing.SpringIn);
                btnFlip1.IsVisible = false;
                btnFlip2.IsVisible = true;
                await btnFlip2.RotateYTo(-360, timeout, Easing.SpringOut);
                btnFlip2.RotationY = 0;
            }
            else
            {
                btnFlip1.RotationY = -270;
                await btnFlip2.RotateYTo(-90, timeout, Easing.SpringIn);
                btnFlip2.IsVisible = false;
                btnFlip1.IsVisible = true;
                await btnFlip1.RotateYTo(-360, timeout, Easing.SpringOut);
                btnFlip1.RotationY = 0;
            }
        }
    }
} | 
3- Definindo a view LayoutPage
Abra o arquivo LayoutPage.xaml e inclua o código a seguir:
| <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XF_Animacao1.Views.LayoutPage"
             Title="Animação - Layout">
    <ContentPage.Content>
        <StackLayout WidthRequest="350" VerticalOptions="Center" HorizontalOptions="Center" Spacing="0">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <BoxView Grid.Column="0" Grid.ColumnSpan="2" BackgroundColor="#0997d3" />
                <Label x:Name="lblHeader" Grid.Column="0" Text="Cabeçalho" HorizontalOptions="Start" 
                       FontAttributes="Bold" FontSize="36" Margin="25,0,0,0" />
                <Button x:Name="btnRodar" Text="↓" Grid.Column="1" Clicked="btnRodar_Click" 
                        BackgroundColor="Transparent" Rotation="180" FontSize="36" 
                        VerticalOptions="Center" FontAttributes="Bold" TextColor="Black" Margin="0,0,25,0" />
            </Grid>
            <BoxView x:Name="boxConteudo" BackgroundColor="Yellow" HeightRequest="300" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage> | 
Agora abra o arquivo LayoutPage.xaml.cs e vamos incluir o código a seguir:
| using System;
using System.Collections.Generic;
using System.Threading.Tasks;using Xamarin.Forms;
using Xamarin.Forms.Xaml;namespace XF_Animacao1.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class LayoutPage : ContentPage
    {
        public LayoutPage ()
        {
	InitializeComponent ();
        }        bool _colapsar;
        private async void btnRodar_Click(object sender, EventArgs e)
        {
            if (_colapsar)
            {
                await Task.WhenAll(new List<Task> { boxConteudo.LayoutTo(new Rectangle(boxConteudo.Bounds.X, 
                    boxConteudo.Bounds.Y, boxConteudo.Bounds.Width, 300), 500, Easing.CubicOut),
                    boxConteudo.RotateTo(180, 500, Easing.SpringOut) });
                _colapsar = false;
            }
            else
            {
                await Task.WhenAll(new List<Task> { boxConteudo.LayoutTo(new Rectangle(boxConteudo.Bounds.X, 
                    boxConteudo.Bounds.Y, boxConteudo.Bounds.Width, 0), 500, Easing.CubicIn),
                    boxConteudo.RotateTo(360, 500, Easing.SpringOut) });
                btnRodar.Rotation = 0;
                _colapsar = true;
            }
        }
    }
} | 
Executando o projeto iremos obter o seguinte resultado:

Pegue o 
código do projeto compartilhado aqui : 
 XF_Animacao1.zip (sem 
as referências)
 
 XF_Animacao1.zip (sem 
as referências)
"Disse-lhe, pois, Pilatos: Logo tu és rei? Jesus 
respondeu: Tu dizes que eu sou rei. Eu para isso nasci, e para isso vim ao 
mundo, a fim de dar testemunho da verdade. Todo aquele que é da verdade ouve a 
minha voz."
João 18:37
| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? | 
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a 
Objetos com VB .NET

Xamarim - Desenvolvimento Multiplataforma com C# ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Criando sua primeira ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Anatomia da aplicação - Macoratti.net
https://developer.xamarin.com/api/type/Android.Widget.ListView/
https://developer.xamarin.com/api/property/Android.Widget.ListView.Adapter/
https://developer.xamarin.com/guides/xamarin-forms/user-interface/animation/