O X do Xamarin Forms — Effects

Image for post
Image for post

Fala galera,

Semana passada escrevi um artigo falando sobre custom renderer e no final falei a palavra Effects. Mas o que é Effects? O que come ? Onde vive ? Confira no do… Ei.. vamos conferir logo abaixo!

Effects (Efeitos) nos permitem pequenas personalizações nos controles nativos de cada plataforma, como por exemplo estilos do controle.

Certo, pelo que eu entendi ele faz o mesmo que o Custom Renderer ?

Mais ou menos. Effects simplifica a personalização dos controles, quando queremos obter efeitos simples como alterar a cor do fundo de um TextBox, ou adicionar um sublinhado a um label.

Quando precisamos substituir um controle implementado pelo Xamarin.Forms por um nativo utilizamos Custom Renderer. Mas quando queremos realizar alterações nas propriedades de um controle,recomento utilizar Effects.

Pode parecer confuso mas simplificando é :

Utilizo Effects para Efeitos Simples

Utilizo Custom Renderer para Substituir os métodos ou um controle especifico do Xamarin.Forms por um nativo.

Vamos fazer um exemplo simples para demonstrar.

No nosso projeto IOS Vamos criar a classe FocusEffect.cs:

e agora no projeto Android :

O que acabamos de implementar vai alterar a cor de fundo de um controle, assim que ele for selecionado.

Vamos entender o que foi feito. Para criar um Effect precisamos:

1. Criar uma subclasse da PlatformEffect.

2. Substituir o método OnAttached ou OnDetached de cada plataforma com nossa personalização.

3. Adicionar um ResolutionGroupName como atributo da classe. Este carinha criar um namespace para os nossos efeitos, assim evitamos problemas de duplicidade com efeitos de mesmo nome.

4. Finalmente adicionamos o atributo ExportEffect. Ele que vai criar um id para nosso efeito que será utilizado pelo Xamarin.Forms.

Agora voltemos a nosso projeto Core e em nosso Xaml vamos implementar o Effect criado :

E para que nosso projeto entenda o nosso efeito devemos criar uma classe RoutingEffect

Agora vamos rodar

No iOS:

Image for post
Image for post

No Android:

Image for post
Image for post

Viram? Cada plataforma realizou um efeito diferente.

É possível utilizar os Effects através de Behavior ou passando parametros.. mas isso é assunto para outro artigo.

Quem quiser pode baixar o código de exemplo aqui.

Se quiser saber mais de effects pode olhar a documentação oficial.

Espero ter ajudado!

Aquele abraço!

Written by

Microsoft MVP,Gamer, Desenvolvedor e apaixonado por tecnologia!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store