¿Cómo hacer un popup animado de 3 estrellas en .Net MAUI y Lottie?

rretamal
4 min readNov 21, 2022

--

English version:https://medium.com/@rretamal.dev/writing-an-animated-3-star-popup-with-net-maui-and-lottie-cb67b7dfe7e

En múltiples aplicaciones gamificadas y juegos podemos ver el típico sistema de 3 estrellas que indican que tan bien un usuario realizo una acción, pasó un nivel, etc, en este caso me pregunté como hacer algo así en .Net Maui.

Existen varias alternativas en este caso pero dada la facilidad de las implementacion con Lottie (el tiempo es un recurso escaso) y la calidad de las animaciones me decidí hacer un ejemplo.

Para ello lo primero es crear nuestro proyecto en Visual Studio 2022:

Seguidamente seleccionaremos el framework, yo en este caso usé .Net 7 y le colocaremos un nombre a nuestro proyecto.

Una vez cumplidos los pasos anteriores veremos la plantilla estandar del proyecto Maui que consiste en un botón con un par de labels y una imagen:

En este momento agregaremos las librerías necesarias por Nuget:

  • CommunityToolkit.Maui: para levantar un popup
  • Skiasharp.Extended.UI.Maui: para ejecutar la animación

Seguidamente iremos a la web de Lottie https://lottiefiles.com/ donde buscaremos una animación con estrellas:

Yo me fui por la primera imagen pero hay muchas mas. En este caso lo que necesitamos es el archivo .json de la animación y lo guardaremos en la carpeta Raw (Resources -> Raw).

Ya con nuestro archivo en lugar crearemos un ContentView donde tendremos nuestra animación de estrellas, para ello se hará click derecho en el proyecto y de ahí a Agregar -> Nuevo Archivo donde seleccionaremos de las plantillas de Maui un .Net MAUI ContentView (XAML), en mi caso lo nombre StarRating:

En este archivo cambiaremos algunas cosas, en vez del ContentView lo modificaremos a un Popup del Xamarin Community Toolkit, para ello tenemos que agregar la referencia al Toolkit y la referencia a Skiasharp:

xmlns:skia=”clr-namespace:SkiaSharp.Extended.UI.Controls;assembly=SkiaSharp.Extended.UI”
xmlns:toolkit=”http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

El archivo XAML quedaría de la siguiente manera:

Lo que verás es que se modifico el ContentView por el toolkit:Popup y dentro se colocó un Frame para darle un fondo blanco con esquinas redondas y dentro se colocó un grid de 3 columnas, una por cada estrella, en la columna 1 y 3 se bajaron un poco las estrellas para dar la impresión de arco.

Seguidamente se verá un control del tipo SKLottieView que es el que necesitamos para mostrar la animación, las propiedades que nos interesan en este caso son:

  • Source: hace referencia al archivo de animación, en este caso star.json
  • RepeatCount: solo queremos ejecutar la animación una sola vez sin repetición
  • IsAnimationEnabled: por defecto la estrella se verá apagada hasta que decidamos activarla

El archivo CS quedaría de la siguiente manera:

En el archivo tendremos un método llamado ShowStarAnimation que hará una espera inicial e irá activando cada estrella despues de una pausa entre estrellas.

Que toca ahora? invocarlo desde la pantalla principal, yo eliminé todo el contenido inicial y solo dejé un botón:

El archivo .cs luciría de la siguiente manera:

En el cs capturamos el click del botón e inicializamos nuestro popup ejecutando seguidamente la rutina de animación.

El resultado sería el siguiente:

El código lo pueden conseguir por aquí:

Happy Coding!

https://www.buymeacoffee.com/2hepU6W

--

--