SlideShare una empresa de Scribd logo
1 de 41
El presente y
futuro de
Xamarin.Forms
SPONSORS
Javier Suárez
¡Hola!. Trabajo en el equipo de Xamarin.Forms en
Microsoft. Me encanta participar en comunidades
técnicas y soy coordinador de los grupos
CartujaDotNet y SVQXDG en Sevilla.
Puedes poner en contacto conmigo:
•@jsuarezruiz
•javiersuarezruiz@hotmail.com
•https://javiersuarezruiz.wordpress.com
¿Qué vamos a ver?
• Un repaso al año
• Comunidad
• Herramientas
• Xamarin.Forms
• ¿Qué llega próximamente?
• Herramientas
• Xamarin.Forms
• Preguntas y Respuestas
Un repaso al año
Novedades en Xamarin.Forms, herramientas y
estado de la comunidad
Comunidad
Incremento en la participación activa de la comunidad (eventos, directos o
PRs).
¡GRACIAS!
A la increíble comunidad Xamarin
Mejoras en herramientas
• Nuevo XAML Intellisense.
• Nuevo editor C# y XAML en
VS4Mac.
• Gestión automática de SDKs de
Android.
• Mejoras en iOS Build Host
(aprovisionamiento automático,
etc).
• Soporte a Android App Bundle.
• Startup Tracing para Android.
• AndroidX migration tool.
• Xamarin Binding Tools para Swift.
•
•
Reducir tiempo e iteraciones
Hot Reload – Aplica cambios en el Código de la App en ejecución
manteniendo estado de UI y navegación.
• XAML
Hot Restart – Aplica cambios al Proyecto con un clic en el botón “Restart”,
relanzando la App a su punto de entrada sin requerir otra compilación
complete y despliegue.
• Aplica cambios en multiples archivos, etc.
• Añade NuGets al Proyecto.
• Añade o elimina recursos.
XAML Hot Reload
• Guardar el archivo XAML y ver
cambios reflejados al vuelo en
el emulador o dispostivo donde
se ha desplegado la App.
• Soporta todos los tipos de
contenido XAML válido,
incluidas páginas, Shell o
Application.
• Resistente ante typos.
• Mantiene el estado de la UI y de
la navegación.
Hot Restart
• XAML Hot Reload para Xamarin.Forms
permite iterar rápidamente en interfaces
de usuario XAML en tiempo de ejecución
sin tener que compilar e implementar. Sin
embargo, ¿qué pasa con otros tipos de
cambios? ¿Como agregar recursos o
ediciones de varios archivos?
• Para habilitar la iteración rápida para estos
escenarios, llega Hot Restart. Aplica los
cambios realizados a la aplicación,
incluidas las ediciones de código de
múltiples archivos, recursos y referencias.
En lugar de tener que realizar una
compilación completa e implementar
nuevamente, basta con pulsar el botón de
reinicio.
Novedades en Xamarin.Forms
Shell
• Flyout
• Bottom Tabs
• Top Tabs
• Navegación por URI
Visual
• Controles usando Material
para un look & feel
consistente entre plataformas
• Controles nativos
Shell
Android, iOS y llega a UWP (Preview)
Crear pestañas de forma sencilla
<TabBar>
<Tab Title="Browse" Icon="tab_feed.png">
<ShellContent ContentTemplate="{DataTemplate local:ItemsPage}" />
</Tab>
<Tab Title="About" Icon="tab_about.png">
<ShellContent ContentTemplate="{DataTemplate local:AboutPage}" />
</Tab>
</TabBar>
Flyout de forma sencilla
<FlyoutItem Title="Browse" Icon="tab_feed.png">
<ShellContent ContentTemplate="{DataTemplate local:ItemsPage}" />
</FlyoutItem>
<FlyoutItem Title="About" Icon="tab_about.png">
<ShellContent ContentTemplate="{DataTemplate local:AboutPage}" />
</FlyoutItem>
Shell Navigation Service
Shell.Current
.GoToAsync($"detail?id={city.id}");
Shell Navigation Service
[QueryProperty("CityId", "id")]
public partial class CityDetailPage :
ContentPage
{
public CityDetailPage()
{
InitializeComponent();
}
public string CityId
{
set
{
// do something with the Id
}
}
}
Una forma sencilla de usar renderers que
tienen como objetivo conseguir el mismo
look and feel entre plataformas.
Disponible en:
• Xamarin.Forms 3.6 y nuevas versiones
• Android e iOS
Visual
Es un sistema de diseño de Google que indica
buenas practices para la UI de Desarrollo web
y móvil.
• Promueve la usablididad.
• Tema incluido en Android.
• Librería disponible con controles para iOS.
Material
Design
Usando Visual
1. Instala el NuGet Xamarin.Forms.Visual.Material en Android e iOS
2. Inicializa en MainActivity.cs y AppDelegate.cs
3. Visual="Material"
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/visual/material-visual
CollectionView: Xamarin.Forms 4.3
EmptyView
Nuevos Layouts
• LinearItemsLayout: Horizontal, Vertical
• GridItemsLayout
• CustomLayout
Incremental Loading
• RemainingItemsThreshold
• RemainingItemsThresholdReachedCommand
• RemainingItemsThresholdReachedCommandParameter
CollectionView: Xamarin.Forms 4.3
Grouping
• Header
• Footer
Item Snapping
Item Spacing
A diferencia del ListView: No se necesita ViewCells en favor del
rendimiento
Modos de selección
Opciones disponible:
• None
• Single
• Multiple
La selección identifica un element en la colección. Puedes usar la
selección para realizar tareas como la navegación, etc.
Pull To Refresh
RefreshView – contenedor que permite hacer pull to refresh sobre
cualquier contenido scrollable.
<RefreshView IsRefreshing="{Binding IsRefreshing}"
Command="{Binding RefreshCommand}">
<ScrollView>
<FlexLayout Direction="Row"
Wrap="Wrap"
AlignItems="Center"
AlignContent="Center"
BindableLayout.ItemsSource="{Binding Items}"
BindableLayout.ItemTemplate="{StaticResource ColorItemTemplate}" />
</ScrollView>
</RefreshView>
RefreshView
Tener Pull to Refresh para cubrir casi cualquier
necesidad de forma sencilla.
<RefreshView
BackgroundColor="{StaticResource WhiteColor}"
RefreshColor="{StaticResource AccentColor}"
IsRefreshing="{Binding IsBusy}"
Command="{Binding ReloadCommand}">
<ScrollView>
</ScrollView>
</RefreshView>
CarouselView
Llega control de tipo Carousel cargado de
opciones. Posibilidad de personalizar margenes,
espaciados, elementos visibles, etc.
<CarouselView
ItemTemplate="{StaticResource DrinkTemplate}"
ItemsSource="{Binding Drinks}">
<CarouselView.ItemsLayout>
<ListItemsLayout
Orientation="Horizontal"
SnapPointsAlignment="Center"
SnapPointsType="MandatorySingle" />
</CarouselView.ItemsLayout>
</CarouselView>
CarouselView
LinearItemsLayout: Horizontal, Vertical
Elementos visibles
• NumberOfSideItems
• PeekAreaInsets
Item Spacing
Hereda opciones del CollectionView. Ej: Incremental Loading
Otras novedades del año
• Mapas (bindable ItemsSource,
custom pins, poder dibujar
figuras, ItemTemplateSelecor, más
eventos, etc.).
• Mejoras en Label (soporte a
HTML, espacio de texto, padding,
etc.).
• Mejoras en Switch (ThumbColor,
etc.).
• Checkbox.
• RelativeSource.
•
•
•
•
•
DEMO
Veamos CarouselView, CollectionView,
RefreshView y todo lo posible!
Mirando hacia el
futuro
Novedades en Xamarin.Forms y herramientas
Herramientas: Reducir tiempos e iteraciones
Hot Reload – Continuará mejorando con:
• Incremental reloading.
• Reloading simultáneo (multiples emuladores y/o dispositivos).
• Soporte a CSS.
Hot Restart – igualmente, continuará mejorando:
• Soporte a iOS en Visual Studio para macOS.
• Soporte a Android.
IndicatorView
Indicator de posición específica dentro de una colección de
elementos.
Estará disponible en Xamarin.Forms 4.4-pre3.
var indicatorView = new IndicatorView
{
HorizontalOptions = LayoutOptions.Center,
Margin = new Thickness(12, 6, 12, 24),
IndicatorColor = Color.Gray,
SelectedIndicatorColor = Color.Black,
IndicatorsShape = IndicatorShape.Square
};
indicatorView.SetItemsSourceBy(carouselView);
SwipeView
Opciones contextuales haciendo Swipe!.
<SwipeView>
<SwipeView.LeftItems>
<SwipeItems Mode="Reveal">
<SwipeItem Text="Favorite" Command="{Binding Favorite}">
<SwipeItem.Icon>
<FontIconSource Glyph="&#xE734;"/>
</SwipeItem.Icon>
</SwipeItem>
<SwipeItem Text="Share" Command="{Binding Share}">
<SwipeItem.Icon>
<FontIconSource Glyph="&#xE27D;"/>
</SwipeItem.Icon>
</SwipeItem>
</SwipeItems>
</SwipeView.LeftItems>
<SwipeView.RightItems>
<SwipeItems Mode="Execute">
<SwipeItem Text="Delete" Command="{Binding Delete}">
<SwipeItem.Icon>
<FontIconSource Glyph="&#xE74D;"/>
</SwipeItem.Icon>
</SwipeItem>
</SwipeItems>
</SwipeView.LeftItems>
<Frame>
<Label Text="Foo" />
</Frame>
</SwipeView>
Gradientes Everywhere!Tendremos propiedad Background que permitirá usar Brushes (SolidColorBrush, LinearGradientBrush,
RadialGradientBrush).
BackgroundColor pasará ser deprecado. Se podrá seguir usando pero aparecerá warning en el Proyecto.
<SolidColorBrush
x:Key="SolidColor"
Color="Red"/>
<LinearGradientBrush
x:Key="LinearGradient"
StartPoint="0, 0"
EndPoint="1, 0">
<LinearGradientBrush.GradientStops>
<GradientStop Color="Yellow" Offset="0.2" />
<GradientStop Color="Orange" Offset="0.4" />
<GradientStop Color="Red" Offset="0.8" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<RadialGradientBrush
x:Key="RadialGradient"
GradientOrigin="0.5,0.5"
Center="0.5,0.5"
RadiusX="0.5"
RadiusY="0.5">
<RadialGradientBrush.GradientStops>
<GradientStop Color="Yellow" Offset="0.2" />
<GradientStop Color="Orange" Offset="0.4" />
<GradientStop Color="Red" Offset="0.8" />
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
Soporte a Gifs
Todo control que soporta imagenes pasara a soportar gif como un nuevo
formato.
En realidad, apenas hay cambios en API o “cosas nuevas a aprender” salvo la
inclusion de la propiedad IsAnimationPlaying.
Estará disponible en Xamarin.Forms 4.4-pre3.
<Image Source="world.gif" />
Shell
Continuará mejorando cubriendo:
• Facilitar la navegación entre diferentes escenarios (LayoutScenario).
• Templates.
• TitleView.
• Etc.
<LayoutScenario Route="Anonymous">
<!-- When the user is on this Login Page they won't see a flyout menu-->
<TabBar Route="LoginPage">
<local:LoginPage/>
</TabBar>
</LayoutScenario>
<LayoutScenario Route="Employee">
<!-- When the user is here they won't be able to get back to the Login Page-->
<FlyoutItem Route="LoggedIn">
<UserPages/>
</FlyoutItem>
<FlyoutItem>
<UserPages/>
</FlyoutItem>
</LayoutScenario>
Visual
Tener una forma sencilla de tener consistencia en la UI entre
plataformas es importante. Continuarán las mejoras en Visual.
La opción más destacada, la llegada de Fabric.
Roadmap (Xamarin.Forms 4.4 – 4.5)
• Nueva librería oficial con
controles como MediaPlayer o
CameraView.
• RadioButton.
• FloatingActionButton.
• NavBar Transparente.
• Storyboards y mejoras en
animaciones.
• Transiciones.
• Mejoras en el ciclo de vida.
• Fixes!
Roadmap (Xamarin.Forms 4.4 – 4.5)
Preguntas &
Respuestas
Gracias!
Gracias a nuestros Sponsors.
Sin ellos el evento no sería posible.

Más contenido relacionado

La actualidad más candente

Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersJavier Suárez Ruiz
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!Javier Suárez Ruiz
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsJavier Suárez Ruiz
 
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.FormsdotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.FormsJavier Suárez Ruiz
 
Interfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.FormsInterfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.FormsJavier Suárez Ruiz
 
re-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarinre-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades XamarinJavier Suárez Ruiz
 
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureXamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureJavier Suárez Ruiz
 
SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000Javier Suárez Ruiz
 
Arquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appArquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appBorja García Cueto
 
Trucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsTrucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsJavier Suárez Ruiz
 
Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps XamarinJavier Suárez Ruiz
 
Intro to xamarin forms: converters, animations, behaviors and triggers
Intro to xamarin forms: converters, animations, behaviors and triggersIntro to xamarin forms: converters, animations, behaviors and triggers
Intro to xamarin forms: converters, animations, behaviors and triggersJosué Yeray Julián Ferreiro
 

La actualidad más candente (20)

Extendiendo Xamarin.Forms
Extendiendo Xamarin.FormsExtendiendo Xamarin.Forms
Extendiendo Xamarin.Forms
 
Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI Handlers
 
Xamarin REvolve 2016
Xamarin REvolve 2016Xamarin REvolve 2016
Xamarin REvolve 2016
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
 
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.FormsdotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
 
Interfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.FormsInterfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.Forms
 
dotNetMálaga - Taller Xamarin
dotNetMálaga - Taller XamarindotNetMálaga - Taller Xamarin
dotNetMálaga - Taller Xamarin
 
re-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarinre-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarin
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 
Servicios Xamarin
Servicios XamarinServicios Xamarin
Servicios Xamarin
 
Novedades de Xamarin 4
Novedades de Xamarin 4Novedades de Xamarin 4
Novedades de Xamarin 4
 
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureXamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
 
SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000
 
Arquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appArquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera app
 
Trucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsTrucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.Forms
 
Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps Xamarin
 
Intro to xamarin forms: converters, animations, behaviors and triggers
Intro to xamarin forms: converters, animations, behaviors and triggersIntro to xamarin forms: converters, animations, behaviors and triggers
Intro to xamarin forms: converters, animations, behaviors and triggers
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Introduccion a Xamarin
Introduccion a XamarinIntroduccion a Xamarin
Introduccion a Xamarin
 

Similar a Monkey Conf 2019: Presente y futuro de Xamarin.Forms

Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxErickCarlos14
 
Creando aplicaciones windows phone
Creando aplicaciones windows phoneCreando aplicaciones windows phone
Creando aplicaciones windows phoneJavier Suárez Ruiz
 
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin FormsDotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin FormsPlain Concepts
 
Introducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLIntroducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLSorey García
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5Cycle-IT
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5Cycle-IT
 
Extendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersExtendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersJavier Suárez Ruiz
 
Explorando Xamarin Forms CarouselView
Explorando Xamarin Forms CarouselViewExplorando Xamarin Forms CarouselView
Explorando Xamarin Forms CarouselViewLuis Beltran
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carreraBorja Merino
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.FormsJavier Suárez Ruiz
 
Introduccion a sharepoint framework
Introduccion a sharepoint frameworkIntroduccion a sharepoint framework
Introduccion a sharepoint frameworkLuis Valencia
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaJerilee Dueñas Rengifo
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaCommunity Managers Latam
 
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...Interlat
 
Microsoft 365 live jueves 16 2020
Microsoft 365 live jueves 16 2020Microsoft 365 live jueves 16 2020
Microsoft 365 live jueves 16 2020Leomaris Reyes
 
Topicos Selectos de Xamarin
Topicos Selectos de XamarinTopicos Selectos de Xamarin
Topicos Selectos de XamarinLuis Beltran
 
Codemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinCodemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinJavier Suárez Ruiz
 

Similar a Monkey Conf 2019: Presente y futuro de Xamarin.Forms (20)

Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptx
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Creando aplicaciones windows phone
Creando aplicaciones windows phoneCreando aplicaciones windows phone
Creando aplicaciones windows phone
 
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin FormsDotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
 
Introducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLIntroducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAML
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Extendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersExtendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom Renders
 
Explorando Xamarin Forms CarouselView
Explorando Xamarin Forms CarouselViewExplorando Xamarin Forms CarouselView
Explorando Xamarin Forms CarouselView
 
Flex Mobile
Flex MobileFlex Mobile
Flex Mobile
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carrera
 
Phonegap
PhonegapPhonegap
Phonegap
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.Forms
 
Introduccion a sharepoint framework
Introduccion a sharepoint frameworkIntroduccion a sharepoint framework
Introduccion a sharepoint framework
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
 
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
 
Microsoft 365 live jueves 16 2020
Microsoft 365 live jueves 16 2020Microsoft 365 live jueves 16 2020
Microsoft 365 live jueves 16 2020
 
Topicos Selectos de Xamarin
Topicos Selectos de XamarinTopicos Selectos de Xamarin
Topicos Selectos de Xamarin
 
Codemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinCodemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller Xamarin
 

Más de Javier Suárez Ruiz

Cape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitCape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitJavier Suárez Ruiz
 
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Javier Suárez Ruiz
 
Crear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsCrear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsJavier Suárez Ruiz
 
Desarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloDesarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloJavier Suárez Ruiz
 
Aumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinAumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinJavier Suárez Ruiz
 
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con XamarinPlain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con XamarinJavier Suárez Ruiz
 
Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017Javier Suárez Ruiz
 
dotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave EnginedotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave EngineJavier Suárez Ruiz
 
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...Javier Suárez Ruiz
 
Xamarin Dev Days Madrid 2017 - Xamarin.Forms
Xamarin Dev Days Madrid 2017 -  Xamarin.FormsXamarin Dev Days Madrid 2017 -  Xamarin.Forms
Xamarin Dev Days Madrid 2017 - Xamarin.FormsJavier Suárez Ruiz
 

Más de Javier Suárez Ruiz (14)

Cape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitCape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community Toolkit
 
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
 
Crear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsCrear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.Forms
 
#XamarinUIJuly Summary
#XamarinUIJuly Summary#XamarinUIJuly Summary
#XamarinUIJuly Summary
 
Novedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 PreviewNovedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 Preview
 
Desarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloDesarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrollo
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 
Aumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinAumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas Xamarin
 
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con XamarinPlain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
 
Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017
 
dotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave EnginedotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave Engine
 
Embeddinator-4000
Embeddinator-4000Embeddinator-4000
Embeddinator-4000
 
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
 
Xamarin Dev Days Madrid 2017 - Xamarin.Forms
Xamarin Dev Days Madrid 2017 -  Xamarin.FormsXamarin Dev Days Madrid 2017 -  Xamarin.Forms
Xamarin Dev Days Madrid 2017 - Xamarin.Forms
 

Monkey Conf 2019: Presente y futuro de Xamarin.Forms

  • 1. El presente y futuro de Xamarin.Forms
  • 3. Javier Suárez ¡Hola!. Trabajo en el equipo de Xamarin.Forms en Microsoft. Me encanta participar en comunidades técnicas y soy coordinador de los grupos CartujaDotNet y SVQXDG en Sevilla. Puedes poner en contacto conmigo: •@jsuarezruiz •javiersuarezruiz@hotmail.com •https://javiersuarezruiz.wordpress.com
  • 4. ¿Qué vamos a ver? • Un repaso al año • Comunidad • Herramientas • Xamarin.Forms • ¿Qué llega próximamente? • Herramientas • Xamarin.Forms • Preguntas y Respuestas
  • 5. Un repaso al año Novedades en Xamarin.Forms, herramientas y estado de la comunidad
  • 6. Comunidad Incremento en la participación activa de la comunidad (eventos, directos o PRs).
  • 7. ¡GRACIAS! A la increíble comunidad Xamarin
  • 8. Mejoras en herramientas • Nuevo XAML Intellisense. • Nuevo editor C# y XAML en VS4Mac. • Gestión automática de SDKs de Android. • Mejoras en iOS Build Host (aprovisionamiento automático, etc). • Soporte a Android App Bundle. • Startup Tracing para Android. • AndroidX migration tool. • Xamarin Binding Tools para Swift. • •
  • 9. Reducir tiempo e iteraciones Hot Reload – Aplica cambios en el Código de la App en ejecución manteniendo estado de UI y navegación. • XAML Hot Restart – Aplica cambios al Proyecto con un clic en el botón “Restart”, relanzando la App a su punto de entrada sin requerir otra compilación complete y despliegue. • Aplica cambios en multiples archivos, etc. • Añade NuGets al Proyecto. • Añade o elimina recursos.
  • 10. XAML Hot Reload • Guardar el archivo XAML y ver cambios reflejados al vuelo en el emulador o dispostivo donde se ha desplegado la App. • Soporta todos los tipos de contenido XAML válido, incluidas páginas, Shell o Application. • Resistente ante typos. • Mantiene el estado de la UI y de la navegación.
  • 11. Hot Restart • XAML Hot Reload para Xamarin.Forms permite iterar rápidamente en interfaces de usuario XAML en tiempo de ejecución sin tener que compilar e implementar. Sin embargo, ¿qué pasa con otros tipos de cambios? ¿Como agregar recursos o ediciones de varios archivos? • Para habilitar la iteración rápida para estos escenarios, llega Hot Restart. Aplica los cambios realizados a la aplicación, incluidas las ediciones de código de múltiples archivos, recursos y referencias. En lugar de tener que realizar una compilación completa e implementar nuevamente, basta con pulsar el botón de reinicio.
  • 12. Novedades en Xamarin.Forms Shell • Flyout • Bottom Tabs • Top Tabs • Navegación por URI Visual • Controles usando Material para un look & feel consistente entre plataformas • Controles nativos
  • 13. Shell Android, iOS y llega a UWP (Preview)
  • 14. Crear pestañas de forma sencilla <TabBar> <Tab Title="Browse" Icon="tab_feed.png"> <ShellContent ContentTemplate="{DataTemplate local:ItemsPage}" /> </Tab> <Tab Title="About" Icon="tab_about.png"> <ShellContent ContentTemplate="{DataTemplate local:AboutPage}" /> </Tab> </TabBar>
  • 15. Flyout de forma sencilla <FlyoutItem Title="Browse" Icon="tab_feed.png"> <ShellContent ContentTemplate="{DataTemplate local:ItemsPage}" /> </FlyoutItem> <FlyoutItem Title="About" Icon="tab_about.png"> <ShellContent ContentTemplate="{DataTemplate local:AboutPage}" /> </FlyoutItem>
  • 17. Shell Navigation Service [QueryProperty("CityId", "id")] public partial class CityDetailPage : ContentPage { public CityDetailPage() { InitializeComponent(); } public string CityId { set { // do something with the Id } } }
  • 18. Una forma sencilla de usar renderers que tienen como objetivo conseguir el mismo look and feel entre plataformas. Disponible en: • Xamarin.Forms 3.6 y nuevas versiones • Android e iOS Visual
  • 19. Es un sistema de diseño de Google que indica buenas practices para la UI de Desarrollo web y móvil. • Promueve la usablididad. • Tema incluido en Android. • Librería disponible con controles para iOS. Material Design
  • 20. Usando Visual 1. Instala el NuGet Xamarin.Forms.Visual.Material en Android e iOS 2. Inicializa en MainActivity.cs y AppDelegate.cs 3. Visual="Material" https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/visual/material-visual
  • 21. CollectionView: Xamarin.Forms 4.3 EmptyView Nuevos Layouts • LinearItemsLayout: Horizontal, Vertical • GridItemsLayout • CustomLayout Incremental Loading • RemainingItemsThreshold • RemainingItemsThresholdReachedCommand • RemainingItemsThresholdReachedCommandParameter
  • 22. CollectionView: Xamarin.Forms 4.3 Grouping • Header • Footer Item Snapping Item Spacing A diferencia del ListView: No se necesita ViewCells en favor del rendimiento
  • 23. Modos de selección Opciones disponible: • None • Single • Multiple La selección identifica un element en la colección. Puedes usar la selección para realizar tareas como la navegación, etc.
  • 24. Pull To Refresh RefreshView – contenedor que permite hacer pull to refresh sobre cualquier contenido scrollable. <RefreshView IsRefreshing="{Binding IsRefreshing}" Command="{Binding RefreshCommand}"> <ScrollView> <FlexLayout Direction="Row" Wrap="Wrap" AlignItems="Center" AlignContent="Center" BindableLayout.ItemsSource="{Binding Items}" BindableLayout.ItemTemplate="{StaticResource ColorItemTemplate}" /> </ScrollView> </RefreshView>
  • 25. RefreshView Tener Pull to Refresh para cubrir casi cualquier necesidad de forma sencilla. <RefreshView BackgroundColor="{StaticResource WhiteColor}" RefreshColor="{StaticResource AccentColor}" IsRefreshing="{Binding IsBusy}" Command="{Binding ReloadCommand}"> <ScrollView> </ScrollView> </RefreshView>
  • 26. CarouselView Llega control de tipo Carousel cargado de opciones. Posibilidad de personalizar margenes, espaciados, elementos visibles, etc. <CarouselView ItemTemplate="{StaticResource DrinkTemplate}" ItemsSource="{Binding Drinks}"> <CarouselView.ItemsLayout> <ListItemsLayout Orientation="Horizontal" SnapPointsAlignment="Center" SnapPointsType="MandatorySingle" /> </CarouselView.ItemsLayout> </CarouselView>
  • 27. CarouselView LinearItemsLayout: Horizontal, Vertical Elementos visibles • NumberOfSideItems • PeekAreaInsets Item Spacing Hereda opciones del CollectionView. Ej: Incremental Loading
  • 28. Otras novedades del año • Mapas (bindable ItemsSource, custom pins, poder dibujar figuras, ItemTemplateSelecor, más eventos, etc.). • Mejoras en Label (soporte a HTML, espacio de texto, padding, etc.). • Mejoras en Switch (ThumbColor, etc.). • Checkbox. • RelativeSource. • • • • •
  • 30. Mirando hacia el futuro Novedades en Xamarin.Forms y herramientas
  • 31. Herramientas: Reducir tiempos e iteraciones Hot Reload – Continuará mejorando con: • Incremental reloading. • Reloading simultáneo (multiples emuladores y/o dispositivos). • Soporte a CSS. Hot Restart – igualmente, continuará mejorando: • Soporte a iOS en Visual Studio para macOS. • Soporte a Android.
  • 32. IndicatorView Indicator de posición específica dentro de una colección de elementos. Estará disponible en Xamarin.Forms 4.4-pre3. var indicatorView = new IndicatorView { HorizontalOptions = LayoutOptions.Center, Margin = new Thickness(12, 6, 12, 24), IndicatorColor = Color.Gray, SelectedIndicatorColor = Color.Black, IndicatorsShape = IndicatorShape.Square }; indicatorView.SetItemsSourceBy(carouselView);
  • 33. SwipeView Opciones contextuales haciendo Swipe!. <SwipeView> <SwipeView.LeftItems> <SwipeItems Mode="Reveal"> <SwipeItem Text="Favorite" Command="{Binding Favorite}"> <SwipeItem.Icon> <FontIconSource Glyph="&#xE734;"/> </SwipeItem.Icon> </SwipeItem> <SwipeItem Text="Share" Command="{Binding Share}"> <SwipeItem.Icon> <FontIconSource Glyph="&#xE27D;"/> </SwipeItem.Icon> </SwipeItem> </SwipeItems> </SwipeView.LeftItems> <SwipeView.RightItems> <SwipeItems Mode="Execute"> <SwipeItem Text="Delete" Command="{Binding Delete}"> <SwipeItem.Icon> <FontIconSource Glyph="&#xE74D;"/> </SwipeItem.Icon> </SwipeItem> </SwipeItems> </SwipeView.LeftItems> <Frame> <Label Text="Foo" /> </Frame> </SwipeView>
  • 34. Gradientes Everywhere!Tendremos propiedad Background que permitirá usar Brushes (SolidColorBrush, LinearGradientBrush, RadialGradientBrush). BackgroundColor pasará ser deprecado. Se podrá seguir usando pero aparecerá warning en el Proyecto. <SolidColorBrush x:Key="SolidColor" Color="Red"/> <LinearGradientBrush x:Key="LinearGradient" StartPoint="0, 0" EndPoint="1, 0"> <LinearGradientBrush.GradientStops> <GradientStop Color="Yellow" Offset="0.2" /> <GradientStop Color="Orange" Offset="0.4" /> <GradientStop Color="Red" Offset="0.8" /> </LinearGradientBrush.GradientStops> </LinearGradientBrush> <RadialGradientBrush x:Key="RadialGradient" GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5"> <RadialGradientBrush.GradientStops> <GradientStop Color="Yellow" Offset="0.2" /> <GradientStop Color="Orange" Offset="0.4" /> <GradientStop Color="Red" Offset="0.8" /> </RadialGradientBrush.GradientStops> </RadialGradientBrush>
  • 35. Soporte a Gifs Todo control que soporta imagenes pasara a soportar gif como un nuevo formato. En realidad, apenas hay cambios en API o “cosas nuevas a aprender” salvo la inclusion de la propiedad IsAnimationPlaying. Estará disponible en Xamarin.Forms 4.4-pre3. <Image Source="world.gif" />
  • 36. Shell Continuará mejorando cubriendo: • Facilitar la navegación entre diferentes escenarios (LayoutScenario). • Templates. • TitleView. • Etc. <LayoutScenario Route="Anonymous"> <!-- When the user is on this Login Page they won't see a flyout menu--> <TabBar Route="LoginPage"> <local:LoginPage/> </TabBar> </LayoutScenario> <LayoutScenario Route="Employee"> <!-- When the user is here they won't be able to get back to the Login Page--> <FlyoutItem Route="LoggedIn"> <UserPages/> </FlyoutItem> <FlyoutItem> <UserPages/> </FlyoutItem> </LayoutScenario>
  • 37. Visual Tener una forma sencilla de tener consistencia en la UI entre plataformas es importante. Continuarán las mejoras en Visual. La opción más destacada, la llegada de Fabric.
  • 38. Roadmap (Xamarin.Forms 4.4 – 4.5) • Nueva librería oficial con controles como MediaPlayer o CameraView. • RadioButton. • FloatingActionButton. • NavBar Transparente. • Storyboards y mejoras en animaciones. • Transiciones. • Mejoras en el ciclo de vida. • Fixes!
  • 41. Gracias! Gracias a nuestros Sponsors. Sin ellos el evento no sería posible.

Notas del editor

  1. It all starts here with the quickest and easiest way to setup your application.
  2. It all starts here with the quickest and easiest way to setup your application.
  3. It all starts here with the quickest and easiest way to setup your application.