![]() |
![]() |
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)
"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/