ANIMATIONWITH FORMS/CUSTOM
RENDERERS
Mahmoud Ali – Mobile Developer @Lambda3
@akamud
XAMARIN.FORMS
• Vai além do reaproveitamento de código de UI
• Framework com recursos poderosos
• Animations API
• Custom Renderers
ANIMAÇÕES
IMPORTÂNCIA DAS ANIMAÇÕES
• Captura do foco do usuário
• Dica do que irá acontecer se o usuário completar uma
ação
• Relacionamento entre elementos
• Distração de operações demoradas em background
• Qualidade, detalhamento
IMPORTÂNCIA DE ANIMAÇÕES
https://dribbble.com/shots/2111739-Pull-To-Refresh
IMPORTÂNCIA DE ANIMAÇÕES
https://dribbble.com/shots/2393934-iPad-App-Interactions
XAMARIN.FORMS ANIMATIONS
• Permite mudar propriedades visuais dos elementos
• Transforma as propriedades ao longo do tempo
• São awaitables
• ViewExtensions, Animation e
AnimationExtensions
ROTATION
• Rotaciona o elemento
SCALING
• Muda o tamanho do elemento
TRANSLATION
• Move o elemento
FADING
• Muda a opacidade do elemento
VIEWEXTENSIONS
• Pode ser aplicado em qualquer View
• TranslateTo (TranslationX eTranslationY)
• ScaleTo/RelScaleTo (Scale)
• RotateTo/RelRotateTo (Rotation)
• RotateXTo/RotateYTo (RotationX, RotationY)
• FadeTo (Opacity)
• CancelAnimations
DEMO
ANCHOR
• É o ponto de referência do posicionamento do
elemento
• Também é usado como ponto de referência para
animação
• Sua posição é relativa
• 0 é o ponto mais à esquerda
• 1 é o ponto mais à direita
ANCHOR
EASING
• Torna animações mais realistas
• Aplicada durante a animação
EASING
• Funções de Easing nativas:
• Linear (padrão)
• SinIn, SinOut, e SinInOut
• CubicIn, CubicOut, e CubicInOut
• BounceIn e BounceOut
• SpringIn e SpringOut
https://developer.xamarin.com/api/type/Xamarin.Forms.Easing/
FUNÇÕES DE EASING CUSTOMIZADAS
http://easings.net
DEMO
CUSTOM RENDERERS
COMO XAMARIN.FORMS FUNCIONA?
• Abstração da interface gráfica
• Resolução do componente depende da plataforma
em que roda
• Os controles do Xamarin.Forms são apenas
abstrações em cima de componentes padrões das
plataformas
IMPLEMENTAÇÃO
• Xamarin.Forms Button
• Xamarin.Android ButtonRenderer
(Android.Widget.Button)
• Xamarin.iOS ButtonRenderer (UIKit.UIButton)
IMPLEMENTAÇÃO
• ViewRenderer<TView, TNativeView>
• TView – Sua view no projeto Xamarin.Forms (PCL)
• TNativeView – Sua view no projeto específico da
plataforma (iOS, Android ou UWP)
IMPLEMENTAÇÃO
• ExportRenderer
• Atributo que indica qual será a implementação para a
classe declarada no código compartilhado
• Atributo de assembly, deve ser declarado acima do
namespace
IMPLEMENTAÇÃO
• Control
• Elemento disponível noViewRenderer que indica o
componente nativo que será renderizado
• Element
• Elemento disponível noViewRenderer que indica o
componente manipulado pelo Xamarin.Forms no projeto
compartilhado
CUSTOM RENDERERS PROPERTIES
• É possível definir properties que podem ser bindadas
no XAML declarando BindableProperty na classe do
projeto Xamarin Forms
• OnElementPropertyChanged do CustomRenderer
permite atulizar as propriedades necessárias sempre
que o valor mudar
CUSTOM RENDERERS EVENTS
• Eventos são tratados pelo custom renderer. É
necessário disparar um evento caso queiramos tratá-
lo na nossa classe compartilhada no projeto PCL do
Xamarin.Forms
DEMO
LINKS
• https://github.com/akamud/FormsAnimations
• https://github.com/akamud/CustomRenderers
• Documentação sobre Animações
• Livro Charles Petzold
OBRIGADO!
@akamud
mahmoud.ali@lambda3.com.br

Animation com Xamarin.Forms e Custom Renderers