¿Te imaginas tomar una animación creada por un diseñador y poder utilizarla?.
Lottiees una librería de animaciones creada por Airbnb para iOS y Android que se encarga de tomar animaciones de After Effect exportadas en JSON y renderizarla utilizando APIs de animación nativa en cada plataforma.
Las animaciones pueden ser extremadamente complejas pero al final, trabajamos con archivos de imagen y JSONs lo que se traduce en un requisito pequeño en tamaño otorgando unas posibilidades altas. Las animaciones se pueden reproducir, pausar, detener, jugar con la velocidad o cambiar la escala.
Lottie Player
Usar animaciones de Lottie y acabar lanzando la App en depuración o usando herramientas externas para ver el resultado no es lo idóneo, ¿verdad?. Lottie Playeres un addin para Visual Studio para macOS que permite previsualizar (e interactuar) con la animación directamente desde el IDE.
¿Cómo instalar?
Para instalar el addin, en Visual Studio para macOS, accedemos al menu principal y seleccionamos Extensions…
Buscamos por «Lottie Player»:
Y pulsamos Install…
¿Qué aporta?
Podremos hacer clic derecho sobre un archivo de animación Lottie (recuerda, formato Json) y acceder a una nueva opción, Preview In Lottie Player…
Seleccionando la opción, previsualizaremos la animación en bucle además de:
Poder pausar y reanudar la animación en cualquier momento.
Si pausamos la animación, podremos movernos hacia cualquier frame de la animación.
Veamos el addin en funcionamiento:
Lo próximo
La versión actual aporta la funcionalidad básica pero hay una gran cantidad de opciones posibles para futuras versiones:
Controlar la velocidad de la animación.
Controlar si se reproduce o no en bucle.
Poder cambiar el fondo de la animación.
Etc.
Puedes encontrar el código del addin en GitHub:
¿Qué te parece el addin?. Recuerda, puedes dejar un comentario directamente en la entrada!
A la hora de desarrollar aplicaciones móviles nos encontramos con ciertas necesidades a cubrir. Una bastante habitual es la de ofrecer en una experiencia sencilla y fluida una breve explicación de la propia aplicación, su funcionalidad o características más importantes.
Para evitar que el usuario acabe «saltando»(Skip) el tutorial, es necesario atraer su atención. En este artículo, vamos a crear un Walkthrough o tutorial donde vamos a utilizar Lottie, animaciones de diferente tipo para conseguir atraer la atención de usuario.
Creando el Carousel
Comenzamos por la parte fundamental, el Carousel. El Carousel es un control que contiene una colección de contenido permitiendo navegar entre el mismo realizando un gesto de deslizamiento lateral.
Entre las diferentes opciones que tenemos disponibles (recuerda que existe paquete oficial para obtener un Carousel) tenemos CarouselView de Alexander Reyes. Es una opción interesante al permitir trabajar con:
Indicadores de posición.
Orientación: Vertical o Horizontal.
Animaciones
Control sobre estado, posición, si se muestran flechas para la navegación o no, etc.
Para trabajar con este Carousel, tras añadir el paquete NuGet correspondiente, añadimos el siguiente namespace en XAML:
Bien, en nuestro caso, cada paso del tutorial será una ContentView. Podemos gestionar la colección de diferentes formas, una sencilla:
_views = new View[]
{
new BikingHardView(),
new AcrobaticsView(),
new SoExcitedView(),
new BikingCoolView()
};
Y utilizando la propiedad ItemsSource(se puede utilizar un enlace a datos), establecemos la colección.
Carousel.ItemsSource = _views;
Tenemos lo básico. Continuamos!.
Lottie a escena!
Utilizando páginas estáticas, sin movimiento, podemos conseguir la atención del usuario con una buena combinación de uso de imágenes, fuentes y otros recursos visuales.
Con un poco de «acción»lo tenemos más sencillo. Tenemos la posibilidad de trabajar con Lottiedesde Xamarin para Android, iOS, así como en UWP y en Xamarin.Forms gracias a la gran comunidad Xamarin.
¿Qué es Lottie?
Airbnb ha desarrollado una herramienta Open Source con la que facilitar la creación de animaciones móviles. Podemos utilizar animaciones potentes creadas con After Effects y utilizarlas desde nuestras aplicaciones móviles de forma sencilla.
Para trabajar con Lottie en Xamarin.Forms, comenzamos añadiendo un paquete NuGet:
Recuerda añadirlo en cada proyecto de plataforma además de en la librería .NET Standard.
Para completar el proceso de preparación de Lottie en nuestro proyecto Xamarin.Forms, necesitamos añadir la siguiente línea tras la inicialización de Xamarin.Forms en cada proyecto nativo:
AnimationViewRenderer.Init();
Todo listo!.
Para mostrar la animación necesitamos un elemento visual que nos permita además realizar una gestión de la misma. Este elemento visual es AnimationView.
Para utilizar AnimationViewdesde XAML necesitamos utilizar el siguiente espacio de nombres:
Hasta este punto, de forma sencilla, conseguimos un resultado bastante atractivo.
Obtener recursos
Un gran fuente de animaciones es LottieFiles. Puedes encontrar una gran variedad de animaciones listas para utilizar con opciones de búsqueda, etc.
NOTA:Si usas animaciones de LottieFiles, recuerda otorgar crédito a sus creadores.
Añadimos más animaciones
Podemos continuar mejorando todo. En cada paso del tutorial vamos a añadir información relevante en texto y otros elementos visuales. Vamos a necesitar saber cuando el usuario pasa de un paso a otro.
De forma sencilla, podemos crear una interfazcomo la siguiente:
public interface IAnimatedView
{
void StartAnimation();
}
De modo que, cada vez que el usuario cambie la ContentView seleccionada, si el paso hereda de nuestra interfaz, ejecutamos la implementación de la misma.
var currentView = _views[e.NewValue];
if (currentView is IAnimatedView animatedView)
{
animatedView.StartAnimation();
}
¿Qué conseguimos con esto?
Vamos a añadir otra dependencia vía NuGet con la librería Xamanimation. Esta pequeña librería añade una gran variedad de animaciones predefinidas además de la posibilidad de crear Storyboards, lanzar animaciones desde XAML, etc.
NOTA:Xamanimation formará parte del bloque de animaciones del Toolkitde Xamarin.Forms.
Esta animación, animará un elemento visual marcado con el nombre InfoPanel, primero la opacidad de su estado inicial, 0, es decir, no visible, a 1 además de realizar una trasladación en el eje Y.
Para lanzarla:
if (Resources["InfoPanelAnimation"] is StoryBoard animation)
{
animation.Begin();
}
Sencillo, ¿verdad?.
De igual forma, aprovechamos algunas animaciones de la librería para animar el color de fondo al pasar de un paso a otro entre otros detalles.
El resultado:
NOTA:Las animaciones de Lottie de este ejemplo corresponden a Yue XIde LottieFiles.
Tienes el código fuente del ejemplo disponible GitHub:
Día a día vamos viendo la evolución de las aplicaciones móviles. Actualmente, la mayoría de usuarios estan acostumbrados a utilizar aplicaciones visualmente atractivas que hacen uso de diferentes transiciones, efectos y animaciones.
En Xamarin.Forms contamos con API compartida para la gestión de animaciones que además da pie a crear librerías como Xamanimation. Sin embargo, en ocasiones crear algunas animaciones (diferentes pasos, transformaciones, etc.) es complejo.
Lottie
¿Te imaginas tomar una animación creada por un diseñador y poder utilizarla?.
Lottie es una librería de animaciones creada por Airbnb para iOS y Android que se encarga de tomar animaciones de After Effect exportadas en JSON y renderizarla utilizando APIs de animación nativa en cada plataforma.
Las animaciones pueden ser extremadamente complejas pero al final, trabajamos con archivos de imagen y JSONs lo que se traduce en un requisito pequeño en tamaño otorgando unas posibilidades altas. Las animaciones se pueden reproducir, pausar, detener, jugar con la velocidad o cambiar la escala.
Obtener recursos
Un gran fuente de animaciones es LottieFiles. Puedes encontrar una gran variedad de animaciones listas para utilizar con opciones de búsqueda, etc.
NOTA: Si usas animaciones de LottieFiles, recuerda otorgar crédito a sus creadores.
Lottie & Xamarin.Forms
La librería Lottie fue creada por Airbnb inicialmente para iOS, Android y React Native. Sin embargo, gracias a la contrinución de Martijn van Dijk y otros miembros de la comuidad, tenemos soporte en Xamarin y Xamarin.Forms.
Para comenzar a trabajar con Lottie en Xamarin.Forms utilizaremos el paquete NuGet Aribnb.Xamarin.Forms.Lottie:
Para completar el proceso de preparación de Lottie en nuestro proyecto Xamarin.Forms, necesitamos añadir la siguiente línea tras la inicialización de Xamarin.Forms en cada proyecto nativo:
AnimationViewRenderer.Init();
Todo listo!.
Para poder mostrar una animación de Lottie, debemos contar con ella. En nuestro ejemplo vamos a utilizar esta animación disponible en LottieFiles creada por Salatiel Queiroz.
Tras descargar el archivo JSON, vamos a añadirlo en cada proyecto nativo:
Android: En la carpeta Assets. El archivo debe tener como acción de compilación AndroidAsset.
iOS: En la carpeta Resources. El archivo debe tener como acción de compilación BundleResource.
UWP: En la carpeta Assets (o en la raíz), el archivo debe tener como acción de compilación Content.
Para mostrar la animación necesitamos un elemento visual que nos permita además realizar una gestión de la misma. Este elemento visual es AnimationView.
Las propiedades fundamentales del elemento visual son:
Animation: El archivo JSON a utilizar.
Loop: Un booleano que indica si la animación se repite en bucle o no.
AutoPlay: Booleano que determina si la animación se auto reproduce.
IsPlaying: Indica si la animación se esta reproduciendo o no.
Speed: Determina la velocidad de reproducción de la animación.
Progress: Valor numérico que nos indica el progreso actual de la animación en reproducción.
Los eventos:
OnPlay: Se inicia la animación.
OnPause: Pausa.
OnFinish: Fin de la animación.
Comandos:
PlaybackStartedCommand: Comanzo lanzado cuando se inicia la animación.
PlaybackFinishedCommand: Comando lanzado al completar la animación.
Para utilizar AnimationView desde XAML necesitamos utilizar el siguiente espacio de nombres:
Podemos pausar la animación utilizando el método Pause y lanzar la animación con Play.
El resultado:
Como podemos observar, el resultado es increíble. Con diferentes recursos y aplicando diferentes animaciones de rotación, trasladación, etc. podríamos conseguir resultados similares pero con un esfuerzo mucho más elevado.
Ejemplo disponible en GitHub:
Recordar que podéis dejar en los comentarios cualquier tipo de sugerencia o pregunta.