El pasado 24 de Octubre, teníamos en CartujaDotNetun evento bastante completo donde revisamos las últimas novedades disponibles en Xamarin, C#, .NET Core, ML.Net, Azure, Azure DevOps, etc.
El material
A continuación puedes encontrar la presentación utilizada en el evento:
Llega el evento técnico Xamarin que estabas esperando, Monkey Conf!.
Monkey Conf será un evento gratuito, en el que trataremos temas relacionados con desarrollo móvil, Xamarin, Xamarin.Forms, App Center, testing y más…
La fecha
Será el próximo Sábado, 01 de Diciembre de 09:30h a 18:30h (GMT+1). Tendremos dos tracks en paralelo con diferentes sesiones técnicas de 50 minutos de duración cada una. Además contaremos con regalos y sorpresas!.
NOTA: Las entradas del evento son gratuitas pero limitadas!
El lugar
El evento se celebrará en Liferay. Dirección detallada:
Paseo de la Castellana, 280, 28046 Madrid, Madrid
Call 4 Papers
¿Has desarrollado una aplicación con Xamarin?, ¿quieres hablar acerca de como usas App Center?, ¿revisar las próximas novedades de Xamarin.Forms?, ¿un taller?. El C4Pdel evento está abierto y estoy seguro que puedes hablar sobre algun tema que interese y ayude al resto!
Necesitar personalizar la barra superior de la aplicación añadiendo un logo, o un texto personalizado (utilizando una fuente específica, múltiples líneas, etc.) es bastante habitual. Hasta ahora, en Xamarin.Formsera algo posible pero…utilizando un Custom Renderer. Es un punto positivo de Xamarin.Forms, poder crear un Custom Renderer para acceder a características y elementos específicos de cada plataforma. Sin embargo, añade la necesidad de añadir más código (por plataforma) para conseguir un resultado.
Sin embargo, con la llegada de Xamarin.Forms 3.2 nos llega TitleView, una nueva opción para personalizar la barra superior sin necesidad de llegar a necesitar código específico por plataforma.
TitleView
TitleViewes parte de NavigationPage, donde se muestra el contenido del título de una ContentPage.
Cabecera personalizada
Comenzamos por un ejemplo sencillo. Vamos a personalizar la cabecera con un icono y título:
Mostramos un listado de peliculas de modo que, cada vez que cambia el texto de la barra de búsqueda, se actualiza el contenido de la página con el listado de películas filtrado.
El resultado:
Puedes encontrar el ejemplo en GitHub:
Limitaciones o problemas conocidos actuales
Entre el listado de limitaciones actuales encontramos:
SearchBar debe ser contenido en un panel con HorizontalOptions=LayoutOptions.Fill y VerticalOptions=LayoutOptions.Fill, o bien, utilizar WidthRequest y HeightRequest específicos para que todo se vea correctamente en iOS.
TitleView no es compatible con Android FormsApplicationActivity.
El contenido no puede ser más grande que el tamaño predeterminado de la barra de navegación en iOS/UWP. En caso de intentarlo, habrá recorte de forma automática.
Ya contábamos con las propiedades BackTitle, Title, TitleIcon y ahora con TitleView ocupando el mismo espacio en la barra de navegación, puede que haya conflictos y espacio limitado para admitir todas estas propiedades al mismo tiempo. Esto variará según la plataforma y el tamaño de la pantalla.
El pasado 26 de Septiembre, teníamos en SVQXDGun divertido evento donde abriendo debate e intercambiando ideas algunos de los ejemplos revisamos opciones disponibles para conseguir interfaces atractivas con Xamarin.Forms. Vimos opciones como efectos, Custom Renderers, SkiaSharp, VisualStateManager, etc.
El material
A continuación puedes encontrar la presentación utilizada en el evento:
Las aplicaciones de consola son geniales!. Probablemente, has realizado alguna aplicación de consola con alguna pequeña (o gran) herramienta.Tener una aplicación de consola tiene ventajas: liviana, multiplataforma, rápida, etc.
¿Y si pudiesemos realizar aplicaciones de consola con Xamarin.Forms?.
gui.cs
Estamos ante un Toolkit de UI para .NET, .NET Core y Mono que permite crear apliaciones de consola (si, con interfaz!) para Linux, macOS y Windows. Creado por Miguel de Icaza.
Añade soporte a colores, reescalado de pantalla, eventos, async, etc. A nivel de gestión de vistas es bastante similar a otros frameworks de UI como GTK# .
Conceptos básicos
gui.cs cuenta on Application.Run, que facilita un bucle principal donde:
Procesar eventos de teclado.
Gestiona el foco.
Redibuja áreas de la pantalla.
Timers.
Etc.
Cada elemento visual, hereda de la clase View. Toda View cuenta con propiedades X, Y, Height y Width para la gestión de tamaño y posición. Todo se pone más interesante al poder realizar composición de Views.
¿Y por qué Xamarin.Forms?
Buena pregunta. El framework ya permite grandes posibilidades, es sencillo de usar, así que, ¿por qué?.
Why not?
Xamarin.Forms cada vez llega a más plataformas tras los backends de WPF y GTK, además de seguir aumentando en posibilidades. Ya había utilizada gui.cs para herramientas y pruebas, vi un tweet, nació un reto personal y voila. ¿Por qué no añadir la posibilidad de crear aplicaciones de consola con Xamarin.Forms?.
Backend gui.cs
Disponible en GitHub y en NuGet, nace el backend de Xamarin.Forms de gui.cs.
NOTA: Todos los ejemplos anteriores estan realizados con Xamarin.Forms.
Actualmente con soporte a:
ContentPage
Layouts
Label
Button
Editor
Entry
ListView
ProgressBar
Switch
Paulatinamente se añadirá soporte a otras características y controles.
¿Cómo lo uso?
Partimos de una aplicación de consola. Tras crear la aplicación, añadimos el paquete NuGet Terminal.Gui.Forms:
Se encarga de añadir las referencias necesarias tanto a Terminal.Gui como a Xamarin.Forms.
Creamos un Application de Xamarin.Forms:
public class App : Xamarin.Forms.Application
{
public App()
{
MainPage = new MainView();
}
}
Se encargará de iniciar y establecer la página inicial. La página inicial, creada con XAML:
La página cuenta con una ViewModel enlazada que se encarga de usar un servicio que accederá a información de OpenWeatherMap para informar de datos climatológicos dado un código postal.
Sólo nos falta, en la clase Program, inicializar Terminal.Gui, XamarinForms; cargar nuestra aplicación; y ejecutar la misma:
public class Program
{
public static void Main()
{
Terminal.Gui.Application.Init();
Forms.Init();
var app = new App();
var window = new FormsWindow("WeatherApp");
window.LoadApplication(app);
Terminal.Gui.Application.Run();
}
}
Sencillo, ¿verdad?. Veamos el resultado:
Puedes encontrar el ejemplo en GitHub:
Recuerda, es una Preview…
Estamos ante la primera Preview con un soporte limitado de guis.cs y de Xamarin.Forms. Sin embargo, hay algunas características aun no disponibles: