Transcript
Page 1: Novedades Xamarin.Forms 2

Yeray Juliá[email protected]

4The future of apps

@josueyeray

Page 2: Novedades Xamarin.Forms 2

Make it fast, easy, and fun to create great

mobile apps.

Xamarin’s Mission

Page 3: Novedades Xamarin.Forms 2

Xamarin + Xamarin.Forms

Traditional Xamarin Approach

With Xamarin.Forms:More code-sharing, all

native

iOS C# UI Windows C#

UIAndroid C# UI

Shared C# Backend

Shared UI Code

Shared C# Backend

Page 4: Novedades Xamarin.Forms 2

What’s new in Xamarin Platform?

Enhanced VS Inte-gration

Xamarin.Forms 2.0

iOS 9 & Android M

PreviewTechnolo-

gies

Page 5: Novedades Xamarin.Forms 2

• Mejoras de integración con iOS 9 y Android 6• Material Design (AppCompat)

• Optimización del rendimiento• XAML pre compilado• Windows 10 (UWP) Preview• Nuevos gestos• Efectos, templates…

Xamarin.Forms 2.0

Page 6: Novedades Xamarin.Forms 2

Ya estaba disponible en 1.4.3-pre1 en modo previewSe desactivo en 1.4.3-pre3 por problemas de renderizadoVuelve en 2.0 de forma final

En tiempo de compilación, se realiza el parsing del XAML y se crean archivos compilados

Mejora del rendimiento de carga de las páginasAnalisis del XAML a nivel sintáctico.

Para depuración puede interferir, por lo que es mejor desactivarlo y usarlo solo en modo release

XAMLC (Xaml Compilado)

Page 7: Novedades Xamarin.Forms 2

Podemos establecer la compilación:A nivel de ensamblado, para todas las páginas XAML:

A nivel de página:

XAMLC (Xaml Compilado)

[assembly: XamlCompilation (XamlCompilationOptions.Compile)]

[XamlCompilation (XamlCompilationOptions.Compile)]public class MyCustomView : ContentView{ ... }

Page 8: Novedades Xamarin.Forms 2

Soporte previo, no definitivo, para Windows 10 Universal AppsSe inicializa como cualquier otra plataforma.Usamos Xamarin.Forms.Platform.UWP para obtener una clase base de página

Problemas conocidos actualmente:Look/feel de algunos controles no es definitivo.Problemas y fallos en la navegación.Problemas de alineamiento de texto.Sin soporte para mapas.

Existen problemas para cargar tipos usando .NET native tool chain para compilar nuestra app.Es usable, pero no está listo para poner en producción como app crítica, por el momento.

Soporte UWP (Windows 10)

10

Page 9: Novedades Xamarin.Forms 2

Este gesto nos permite añadir funcionalidad de Zoom facilmente en nuestros controles

Añadimos el PinchGestureRecognizer a la colección de reconocedores y manejamos el evento PinchUpdated

Tres estados: Started, Running, Completed nos permiten adecuar nuestro código.

Gesto Pinch

<Image Source="waterfront.jpg"> <Image.GestureRecognizers> <PinchGestureRecognizer PinchUpdated="OnPinchUpdated" /> </Image.GestureRecognizers></Image>

Page 10: Novedades Xamarin.Forms 2

Ahora ListView tiene dos modos de funcionamiento:RetainElementRecycleElement

El modo tradicional es RetainElement, presente en todas las versiones de Xamarin.Forms

RecycleElement:solo funciona en iOS/Android. En Windows, aunque se especifique, se sigue usando el modo

antiguo.Durante la virtualización, el contexto de cada celda se

actualiza.Se realiza un inflate de cada DataTemplate por cada render

nativo.

Retain/Recycle en ListView

Page 11: Novedades Xamarin.Forms 2

Se recomienda usar RecycleElement si:El contexto de datos de cada celda define todas las propiedades

de la vista.El tamaño de la celda no cambia y su contenido es muy

parecido.La celda tiene un bajo número de bindings.

Se recomienda usar RetainElement si:Las celdas cambian frequentemente (tamaño, elementos…)Las celdas tienen muchos bindings (20 o más)Si al probar RecycleElement, baja el rendimiento.

El futuro será RecycleElement y se tiende a hacer RetainElement obsoleto, pero no hasta que RecycleElement cubra todos los casos posibles.

Retain/Recycle en ListView

Page 12: Novedades Xamarin.Forms 2

Con Xamarin.Forms 2 se libera una nueva optimización de layout ”experimental”.Impacta en los LayoutUpdates.

Para obtener el mejor resultado posible:Intentar no especificar VerticalOptions ni HorizontalOptions.Con StackLayout, solo tener un hijo como Expand.Evitar RelativeLayout siempre que se pueda.Evitar columnas y filas Auto en la Grid.En AbsoluteLayout evitar AutoSize si es posible.Siempre que se pueda, evitar usar wrapping multilinea en

labels. Usar la opción NoWrap

Optimización de layout

Page 13: Novedades Xamarin.Forms 2

EfectosPlantillasSelector de plantillas

Más… Xamarin.Forms 2.1 pre

Page 14: Novedades Xamarin.Forms 2

Nos permiten modificar la apariencia nativa de un control sin necesidad de crear un CustomRender desde 0Podemos crear efectos de sombras, bordes o lo que necesitemos.Ahora, todo elemento en Xamarin.Forms, contiene una colección de efectos que se le pueden aplicar.Por ejemplo, podemos añadir un borde facilmente a un elemento:

Efectos

public class BorderEffect : PlatformEffect{ protected override void OnAttached () { Control.Layer.BorderColor = UIColor.Purple.CGColor; Control.Layer.BorderWidth = 2; }

protected override void OnDetached () { Control.Layer.BorderWidth = 0; }}

Page 15: Novedades Xamarin.Forms 2

Tenemos que crear los efectos en cada proyecto de plataforma.Para que funcione, debemos marcar el ensamblado de cada plataforma con dos atributos:

Luego, para añadirlo al elemento en el proyecto compartido, usaremos la resolución de efectos que nos provee la clase Effect:

Si no implementamos un efecto en alguna plataforma, Resolve devolverá un valor no nulo, por lo que no pasará nada.

Efectos

[assembly: ResolutionGroupName("DevsDNA")][assembly: ExportEffect(typeof(FocusEffect), "FocusEffect")]

entryText.Effects.Add(Effect.Resolve("DevsDNA.FocusEffect"));

Page 16: Novedades Xamarin.Forms 2

Se introduce el concepto de plantillas para los controles.Podemos cambiar el aspecto de un control, directamente en XAML y para todas las plataformas.Para que funcione, el control tiene que soportar templating.

En la versión actual se soporta para:ContentView – TemplateViewContentPage – TemplatePage

Plantillas

Page 17: Novedades Xamarin.Forms 2

Se incluye por primera vez el selector de plantillas.Podemos crear una clase que herede de la clase DataTemplateSelector y sobreescribir el método OnSelectTemplate para devolver la plantilla que queramos en cada momento.

Como parámetro de OnSelectTemplate, recibimos cada elemento de la lista.

Debemos devolver un DataTemplate

Es importante que no creemos un nuevo DataTemplate por cada elemento, en su lugar, reusamos uno existente.Actualmente, no podemos usar más de 20 templates distintas en un ListView

Selector de plantillas

Page 18: Novedades Xamarin.Forms 2

Están disponibles en GitHub:

http://www.github.com/josueyeray/xamarinforms2

Estos ejemplos…

Page 19: Novedades Xamarin.Forms 2

Get Started Todayxamarin.com

Page 20: Novedades Xamarin.Forms 2

Free 30 Day Trial - xamarin.com/university

Unrivaled Mobile

Development Training

Live unlimited mobile development training from mobile experts, in your time-zone, on your schedule, and as often as you'd like.

Page 21: Novedades Xamarin.Forms 2

evolve.xamarin.-com

Page 22: Novedades Xamarin.Forms 2

Thank You! Questions?Yeray JuliánTech lead & founder @

[email protected]

Devsdna.com/blog

@josueyeray


Top Related