(616) 371-1037

[email protected]

Xamarin.Forms Fancy Animations

April 19, 2018 - Yuriy Holembyovskyy

No Comments

Xamarin.Forms includes its own animation infrastructure that allows for easy creation of simple animations, while also being versatile enough to create complex animations. Let’s take a look how we can reproduce some popular animations with Xamarin.Forms built-in infrastructure.

The first animation that I want to reproduce is the nice entry shaking animation on the macOS X lock screen when you enter an incorrect password.

Shake Animation

The following code example demonstrates the TranslateTo method to reproduce the shake animation:

Lets take a look what we get with this code. The following video shows shaking on each platform:

Flip Animation

Another often used animation is the flip animation. During it we can replace images, colors or even controls. We can achieve this with 3 steps:

  1. Rotate the control to 90 (-90 for Right to Left) degrees so it the width becomes zero pixels
  2. Replace it with the other control previously rotated to 270 (-270)
  3. Rotate the new control to 360 (-360) and setup the rotation to 0.

I will flip one button replacing it with another button with a different background color.  To reproduce the flip animation we will use RotateYTo method:

Here we go

Let’s take a look at what we got

 

Nice, but to me it looks very “linear”. That’s because we have skipped the additional parameter called “easing function”. Omitting the third parameter when creating an animation causes the animation to use the default Linear easing function, which produces a linear velocity. Let’s make it more fancy with smooth accelerations. For this we will pass the easing functions: Easing.SpringIn and Easing.SpringOut.

Let’s take a look what we got now after minor changes:

Collapse/Expand animation

The last example that I want to show you is the Collapse/Expand animation that is often used in different types of accordion controls. Let’s take a look how we can achieve this with LayoutTo function. We will collapse the control’s height (Y-axis) but you can easily collapse the width (X-axis).

Let’s take a look at our results

As you possibly have noticed we also got the “Arrow” rotating  and running simultaneously. This is called Composite Animations. Composite animations can be created by mixing awaited and non-awaited animations and using the Task.WhenAny and Task.WhenAll methods to run multiple asynchronous methods concurrently.

Wrapping Up

The examples in the blog demonstrate how easily with a few lines of code we can get nice smooth hardware-accelerated animations on 3 major platforms. Sample animations source code is available on github.

Yuriy Holembyovskyy

Leave a comment

Your email address will not be published. Required fields are marked *