Agenda de la Monkey Conf 2020 disponible!

El evento

El próximo 02 de Diciembre tendrá lugar la tercera edición de la Monkey Conf, el mayor evento de Xamarin celebrado en España.

Monkey Conf 2020

Este año, y debido a las situación actual con el Covid donde lo más importante es cuidar entre todos la salud, el evento será online. Un hecho que ha permitido tener speakers de cualquier lugar del mundo creando una agenda…espectacular!.

La agenda

Ha sido realmente complejo crear la agenda de este año. Por cada sesión elegida se han tenido que rechazar entre otras dos y tres sesiones. La calidad de las sesiones es muy alta!.

La agenda del evento es:

Hora SesiónSpeaker
9:00 – 9:15KeynoteJavier Suarez
 9:20 10:00Xamarin y MonoGameLuis Marcos
10:05 10:45Aplicaciones para todos los públicosJorge Diego Crespo
10:50 11:30No sé Xamarin… ¿Puedo hacer apps para móvil en .NET?Eduard Tomàs
11:35 12:15En mi móvil funciona! // Pipelines XamarinJuan María Lao & Javier Pulido
12:20 13:00Fabulous Functional FrontendsMark Allibone
13:05 13:45Xamarin Community Toolkit: More possibilities with Xamarin.Forms!Gerald Versluis & Javier Suarez
13:50 14:30Taking beautiful UIs from Adobe XD to Xamarin FormsAngel Garcia
15:00 15:40Seguridad en mobileJosé Manuel Montero Ortega
15:45 16:25.NET MAUI HandlersJavier Suarez
16:30 17:10Mastering XAML in Xamarin FormsCharlin Agramonte & Rendy Del Rosario
17:15 17:55Secure mobile apps with the Microsoft Identity platformChristos Matskas
18:00 18:40Shell, Duo, and the Xamarin Community ToolkitShane Neuville
18:45 19:05Un vistazo a Grial UI Kit
19:10 19:30Psst, es una sorpresa…
19:35 19:45CierreJavier Suarez

Una agenda variada donde se tratan temas como videojuegos, accesibilidad, DevOps, .NET MAUI, XAML, Shell, Surface Duo, diseño, MVU y mucho más.

¿Nos vemos en el streaming?

Más información

[SevillaDotNet] Café Virtual con Javier Cantón

Café Virtual

Los cafés virtuales consisten en una reunión por streaming donde tendremos un café y charla con un invitado especial. De una forma amena y divertida hablaremos con invitados acerca de tecnologías .NET, los conoceremos mejor, etc. Además, tendremos tiempo para conocer también mejor al invitado usando algún que otro “juego” además de permitir la participación de cualquiera que quiera conectar y participar en ronda de preguntas, etc.

Café Virtual

Javier Cantón

Javier Cantón es un ingeniero de software que siempre ha sentido una gran pasión por los gráficos 3D y la arquitectura de software. Ha sido Microsoft Student Partner o Microsoft MVP (durante 9 años), y actualmente trabaja en Plain Concepts como el Lead del equipo de Research.

Javier Cantón

Tendremos la oportunidad de charlar con el de Wave Engine, desarrollo de videojuegos y experiencias 3D, HoloLens y el futuro de .NET.

Será el próximo Miércoles, 04 de Noviembre de 18:30h a 20:30h (GMT+1).

¿Te apuntas?

Más información

[Material] DotNet 2020

El evento

El pasado 21 de Octubre se celebrara la DotNet 2020, el mayor evento de tecnologías .NET celebrado en España por Plain Concepts.

Este año, y debido a la situación actual con el Covid, la conferencia ha sido totalmente online con sesiones vía streaming que se podía seguir repartidos en 5 tracks.

Agradecer a todo el mundo que ha hecho posible la conferencia con el cambio de formato incluido manteniendo una agenda tan variada y potente.

El material

Como en años anteriores, he tenido el placer de poder participar en el evento con una charla y poner mi granito de arena.

En esta ocasión, la sesión trata de cubrir las diferentes formas de crear controles para Xamarin.Forms.

Vimos desde como crear Custom Renderers a controles usando plantillas de control pasando por el uso de SkiaSharp. En cada caso, siempre con recomiendaciones, pros y contras y algunos detalles a tener en cuentas.

¿No pudiste asistir al evento?. Una lástima!. La calidad y variedad de sesiones fue alta. Sin embargo, las grabaciones de cada sesión estarán pronto en YouTube.

Más información

[Evento] Monkey Conf 2020

El evento

En los últimos años, es un placer organizar la  Monkey Conf. Hablamos del mayor evento centrado en Xamarin realizado en España. Una fecha especial para reunir a la comunidad, disfrutar de sesiones técnicas, networking y compartir momentos entre todos.

Este año, debido a la situación con el Covid-19, el formato del evento debe cambiar y buscar nuevas posibilidades en un formato online.

Monkey Conf 2020

Este año el evento se realizará con un streaming en directo donde seguiremos contando con sesiones técnicas además de alguna sesión sorpresa y regalos para los asistentes.

La fecha

Tras recibir información de diferentes fuentes, sponsors, participantes del año anterior o encuestas, este año el evento tendrá lugar entre semana el próximo Miércoles 02 de Diciembre.

De igual forma, al ser el evento online y aunque contar con entradas nos ayudaría a conocer de forma aproximada el interés en el evento, este año no tendremos entradas.

Call 4 Papers

¿Has desarrollado una aplicación con Xamarin?, ¿quieres hablar acerca de cómo usas App Center?, ¿revisar las últimas novedades de Xamarin.Forms?, ¿quieres hablar de .NET MAUI?. El Call 4 Papers del evento ya se encuentra disponible. Este año al ser un evento online nos abre la posibilidad de tener speakers de cualquier lugar del mundo!.

Sponsors

En años anteriores, gracias a sponsors cubríamos costes básicos del evento como goodies (pegatinas, camisetas, etc.), el almuerzo, etc. Este año el evento es online, y seguimos buscando Sponsors.

¿Por qué?.

Creemos que esta siendo un año complicado para todos, y pensamos que gracias a sponsors podríamos sortear y regalar licencias de productos relacionados con el desarrollo o bien, cheques regalo en Amazon, etc. Buscamos tener un pequeño gesto que ayude a alegrar el día a asistentes y esto sería posible gracias a la ayuda de Sponsors.

Si estas interesado en patrocinar el evento, puedes encontrar más información en la página web del evento.

Más información

[SevillaDotNet] Café Virtual con José María Aguilar

Café Virtual

Los cafés virtuales consisten en una reunión por streaming donde tendremos un café y charla con un invitado especial. De una forma amena y divertida hablaremos con invitados acerca de tecnologías .NET, los conoceremos mejor, etc. Además, tendremos tiempo para conocer también mejor al invitado usando algún que otro “juego” además de permitir la participación de cualquiera que quiera conectar y participar en ronda de preguntas, etc.

Café Virtual

José María Aguilar

José María Aguilar trabaja como consultor, formador y desarrollador freelance. Reconocido como Microsoft MVP durante los últimos 10 años es también autor de diferentes libros y cursos. En esta ocasión vamos a charlar de tecnologías Microsoft centrados en desarrollo web y Blazor pero además, de su blog, tendremos tiempo para hablar de formación y lo conoceremos un poquito mejor.

José María Aguilar

Será el próximo Miércoles, 30 de Septiembre de 18:30h a 20:30h (GMT+1).

¿Te apuntas?

Más información

[Xamarin.Forms] Introducción a TemplateUI

El orgien

Con el soporte a Shapes y Brushes en Xamarin.Forms quería explorar las posibilidades para poder crear controles personalizados directamente con Xamarin.Forms (sin usar Custom Renderers, SkiaSharp, etc.). Tras crear algunas pruebas, combinar todo con la posibilidad de usar ControlTemplate (plantillas para personalizar la definición del control), etc. nace TemplateUI.

Nace TemplateUI

TemplateUI es una librería que contiene diversos controles, todos ellos, permitiendo el uso de ControlTemplate.

TemplateUI

Las plantillas de control de Xamarin.Forms permiten definir la estructura visual de los controles. Permiten separar la interfaz de usuario del control de la lógica que implementa el control. También se puede insertar contenido adicional en el control con la plantilla en un lugar predefinido. Por ejemplo, se puede acceder a la plantilla que define el control Rate y hacer modificaciones para cambiar la orientación o aplicar un borde. Hablamos de opciones que mediante propiedades no se pueden personalizar.

AvatarView

Es una representación visual de la imagen de usuario que se puede personalizar con texto, imagen, etc.

BadgeView

Control usado para notificar al usuario con notificaciones o cambios de estado.

CarouselView

Permiten navegar entre una colección de vistas.

ChatBubble

Muestra un mensaje con la forma de un bocadillo de conversación de chat.

CircleProgressBar

Es un control que muestra el porcentaje de progreso en una forma circular.

ComparerView

Es un control que permite mostrar dos vistas (puede ser cualquier tipo de contenido) para realizar una comparativa lado a lado.

ComparerView

DataVisualization

Un conjunto de gráficas creadas usando Shapes. Contiene:

  • Line Chart
  • Area Chart
  • Bar Chart

GridSplitter

Control que permite redistribuir el espacio entre las columnas o filas de un Grid.

Marquee

Usa este control al querer llamar la atención del usuario; añade un texto que hara scroll de forma automática y continua por la pantalla.

ProgressBar

Representa una barra de progreso horizontal que se va rellenando en base a un valor de tipo float.

ProgressBar

Rate

Permite al usuario seleccionar un valor de un grupo de símbolos visuales como una estrella.

SegmentedControl

Es un segmento lineal creado con un conjunto de segmentos que permiten al usuario seleccionar una opción.

Shield

Shield es un tipo de badge.

Slider

Es una barra horizontal que puede ser manipulada para seleccionar un valor de tipo doble entre un rango de opciones.

Slider

Tag

Control para crear tags.

ToggleSwitch

Un control que permite al usuario manipular para alternar entre los estados on y off, que están representados por un valor de tipo boolean.

ToggleSwitch

TreeView

Permite crear una lista con jerarquía de modo que se puede expandir o contraer los nodos que contienen otros nodos anidados.

¿Qué es lo próximo?

Como puedes ver, ya hay una gran cantidad de controles y vienen mas en camino!. En próximos artículos conoceremos cómo usar los controles, opciones de personalización con propiedades y usando plantillas de control, etc.

Más información

[Xamarin.Forms] Brushes

Introducción

Con la llegada de Xamarin.Forms 4.8 llega una funcionalidad altamente esperada, la posibilidad de usar Brushes o lo que es lo mismo, gradientes. En este artículo, vamos a conocer las nuevas posibilidades que tenemos usando brushes.

Brushes

Podemos usar un Brush para pintar el interior y el contorno (en algunos casos) de las vistas, Layouts y formas que componen la interfaz de usuario.

Para usar un gradiente en el fondo de cualquier View, podemos usar la propiedad Fill que espera un valor de tipo Brush. Tenemos las siguientes opciones:

  • SolidColorBrush
  • LinearGradientBrush
  • RadialGradientBrush

SolidColorBrush

SolidColorBrush pinta un área con un único color, como por ejemplo rojo o azul. Se trata del Brush más básico. Desde código XAML podemos usar SolidColorBrush de diferentes maneras:

  • Creando un objeto de tipo SolidColorBrush.
  • Usando una cadena que de formato al color que define al Brush (Ejemplo, color hexadecimal).

Veamos ejemplos:

<Grid
     Background="#FF9988"/>

En el ejemplo anterior, gracias a un TypeConverter podemos definir el Brush de forma sencilla, de forma similar a establecer un color de fondo.

<SolidColodBrush x:Key="MyBrush" Color="#FF9988" />


<Grid
     Background="{StaticResource MyBrush}"/>

LinearGradientBrush

LinearGradientBrush pinta un área con un degradado que se define a lo largo de una línea. Esta línea es el eje de degradado. Los colores del degradado y su ubicación en el eje de degradado se especifican con objetos de tipo GradientStop.

NOTA: Por defecto, el eje de degradado va de la esquina superior izquierda a la esquina inferior derecha, es decir, se crea un degradado en diagonal.

Cada GradientStop especifica el Color que se utiliza en el eje hasta cierto Offset. El color se puede establecer usando un nombre de color predefinido o mediante valores mientras que la propiedad Offset especifica la posición de cada GradientStop en el eje de degradado. Un objeto Offset es de tipo double con valores entre 0 y 1. Un Offset con un valor de 0 sitúa el GradientStop al principio del eje de degradado; es decir, cercano a su StartPoint. Por otro lado, un Offset con un valor de 1 sitúa el GradientStop en su EndPoint.

Para cambiar la dirección del degradado usamos las propiedades StartPoint y EndPoint. Podemos crear degradados horizontales o verticales, invertir el sentido de degradado, etc.

Veamos un ejemplo:

<LinearGradientBrush 
     StartPoint="0, 0" EndPoint="1, 0">
     <LinearGradientBrush.GradientStops>
          <GradientStop Color="Red" Offset="0.1" />
          <GradientStop Color="Pink" Offset="1.0" />
     </LinearGradientBrush.GradientStops>
</LinearGradientBrush>

El resultado:

LinearGradientBrush

RadialGradientBrush

Dibuja un degradado radial definido por las propiedades Center, RadiusX y RadiusY. El origen del degradado se establece usando la propiedad Center.

NOTA: Los colores del degradado se inician en el centro de la elipse y terminan en el radio.

Al igual que usando LinearGradientBrush, los colores del degradado radial se definen creando una colección de GradientStops.

Veamos un ejemplo:

<RadialGradientBrush 
     Center="0.5, 0.5">
     <RadialGradientBrush.GradientStops>
          <GradientStop Color="Red" Offset="0.1" />
          <GradientStop Color="Pink" Offset="1.0" />
     </RadialGradientBrush.GradientStops>
</RadialGradientBrush>

El resultado:

RadialGradientBrush

Gradientes en todas partes!

VisualElement cuenta ahora con una nueva propiedad Background esperando un objeto de tipo Brush. ¿Qué quiere decir esto?. Significa que cualquier View en Xamarin.Forms, es decir, en los controles, layouts e incluso páginas podemos usar gradientes ahora.

E incluso en NavigationPage o TabbedPage:

Gradientes en todas partes!

O usando Shapes:

Gradientes en Shapes

NOTA: Puedes notar que al usar Shapes se pueden usar brushes no solo para rellenar la figura, también para definir el contorno.

Usando CSS

Podemos definir brushes en código XAML y C#, pero en Xamarin.Forms también podemos configurar la apariencia de la aplicación usando CSS. Llega también el soporte a brushes usando CSS.

Veamos un ejemplo:

.linearGradientStyleWithCss90deg {
background: linear-gradient(90deg, rgb(255, 0, 0) 0%,rgb(255, 153, 51) 60%);
}

.linearGradientStyleWithCss180deg {
background: linear-gradient(180deg, rgb(255, 0, 0) 0%,rgb(255, 153, 51) 60%);
}

.linearGradientStyleWithCss270deg {
background: linear-gradient(270deg, rgb(255, 0, 0) 0%,rgb(255, 153, 51) 60%);
}

.radialGradientStyleWithCss {
background: radial-gradient(circle, rgb(255, 0, 0) 25%, rgb(0, 255, 0) 50%, rgb(0, 0, 255) 75%);
}

.radialGradientStyleWithCssLeft {
background: radial-gradient(circle at left, rgb(255, 0, 0) 25%, rgb(0, 255, 0) 50%, rgb(0, 0, 255) 75%);
}

.radialGradientStyleWithCssRight {
background: radial-gradient(circle at right, rgb(255, 0, 0) 25%, rgb(0, 255, 0) 50%, rgb(0, 0, 255) 75%);
}

El resultado:

Usando CSS

En las últimas versiones de Xamarin.Forms hemos ido recibiendo algunas novedades relacionadas puramente con las posibilidades a la hora de crear interfaces de usuario personalizadas. Funcionalidad como shapes, poder hacer clip de vistas o brushes permiten un número mayor de posibilidades para personalizar la interfaz de usuario y también a la hora de crear controles personalizados.

¿Qué te parecen estas novedades?. Recuerda, puedes dejar tu duda o pregunta en los comentarios de la entrada.

Más información

Evolución de comunidades .NET en Sevilla, nace SevillaDotNet

CartujaDotNet

CartujaDotNet es una comunidad técnica de .NET que lleva muchos años en Sevilla. Tras muchos años como coordinador he visto la evolución de eventos, quedadas y cambios en formatos que funcionan mejor o lugares que gustan más.

Evolución de comunidades en Sevilla

Con el paso de los años en Sevilla han ido apareciendo más comunidades técnicas de diversas tecnologías además de más grupos de .NET como SVQDotNet.

La convergencia, nace SevillaDotNet

Con intereses comunes, las sinergias entre comunidades cada vez han sido más constantes y estoy contento de poder comunicar la unificación de las comunidades .NET de Sevilla en SevillaDotNet. Hablamos de una única comunidad que recibirá el esfuerzo común de todos con:

  • Un único Meetup. Esto facilita el compartir eventos, información u ofertas de trabajo.
  • El número de personas involucradas para organizar crece lo cual es positivo, al haber un mayor esfuerzo a la hora de trasmitir eventos o por ejemplo, ofertas de trabajo.
  • Se abren nuevas vías de comunicación como Telegram. Es un chat abierto, sin necesidad de requisitos o registro. Buscamos otra forma sencilla de comunicación.
  • Contamos con mas y nuevos formatos como el café virtual del cual ya he hablado anteriormente.
  • Además, hay una imagen renovada (logos, banners, etc.) y múltiples ideas en marcha.

SevillaDotNet

Personalmente estoy bastante contento de esta nueva etapa para la comunidad .NET en Sevilla, donde participaré y continuaremos para seguir creciendo y mejorando.

¿Te animas a participar?

Más información

[Xamarin.Forms] Recortar vistas (Clip)

La llegada de Shapes a Xamarin.Forms

Con la llegada de Xamarin.Forms 4.7 nos llega la posibilidad de dibujar formas. Sin embargo, ¿sabías que además de poder dibujar una forma podemos cortar cualquier vista con una forma específica?. En este artículo, vamos a aprender cómo cortar vistas con formas.

Clip

La clase VisualElement cuenta ahora con una nueva propiedad llamada Clip de tipo Geometry que define el contorno del contenido.

La clase Geometry (y las clases que derivan de ella) permiten describir la geometría de una forma 2D.

En Xamarin.Forms contamos con geometrías simples como EllipseGeometry, LineGeometry o RectangleGeometry y geometrías más complejas como PathGeometry.

De modo que podemos recortar una imagen para tener una imagen circular de forma sencilla de la siguiente forma:

<Image 
     Source="image.png">
     <Image.Clip>
          <EllipseGeometry 
               RadiusX="100"
               RadiusY="100"
               Center="180,180" />
     </Image.Clip>
</Image>

Ejemplo:

Recortando imágenes!

Se pueden utilizar desde geometrías básicas a complejas usando un Path para definir exactamente la forma deseada.

Pero…funciona con cualquier View!

¿Recuerdas que mencionamos que la propiedad Clip estaba definido en VisualElement?. Esto se traduce en poder recortar cualquier tipo de vista en Xamarin.Forms, no solo imágenes.

Clip Views

De igual forma, recortar dinámicamente cualquier vista y también deshacer el recorte.

Clip Views dinámicamente

Añadir:

var ellipseGeometry = new EllipseGeometry
{
     Center = new Point(75, 75),
     RadiusX = 60,
     RadiusY = 60
};

Image.Clip = ellipseGeometry;

Quitar:

Image.Clip = null;

¿Qué te parece esta funcionalidad?. Recuerda, cualquier duda o comentario es bienvenido en la entrada.

Más información

Microsoft Docs: Xamarin.Forms Shapes

[Xamarin.Forms] Columnas y filas más fácil que nunca en un Grid

Creando columnas y filas en un Grid

XAML es increíble en muchas ocasiones y cumple bien su cometido, pero en ocasiones, puede llegar a ser excesivamente verboso. Un ejemplo de esto lo podemos ver al crear filas y columnas en un Grid:

<Grid>
     <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="100" />
          <ColumnDefinition Width="Auto" />
          <ColumnDefinition Width="Auto" />
          <ColumnDefinition Width="*" />
     </Grid.ColumnDefinitions>
     <Grid.RowDefinitions> 
          <RowDefinition Height="24" />
          <RowDefinition Height= "64" />
          <RowDefinition Height="24" />
          <RowDefinition Height="*" />
          <RowDefinition Height="Auto" />
     </Grid.RowDefinitions>
</Grid>

Esta es la forma clásica de crear filas y columnas hasta la llegada de Xamarin.Forms 4.7…

Simplificando…

Ahora podemos crear filas y columnas de una forma mucho más sencilla:

<Grid ColumnDefinitions="100, Auto, Auto, *" RowDefinitions="24, 64, 24, *, Auto"/>

Fantástico!, ¿no crees?. Esto es posible gracias a un nuevo TypeConverter añadido. Este convertidor analiza el valor que está entrando, que será una cadena y lo convierte en algo que la propiedad entiende permitiéndonos crear filas y columnas de una forma mucho más sencilla.

Más información