novedades xamarin.forms 2
TRANSCRIPT
![Page 2: Novedades Xamarin.Forms 2](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/2.jpg)
Make it fast, easy, and fun to create great
mobile apps.
Xamarin’s Mission
![Page 3: Novedades Xamarin.Forms 2](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/5.jpg)
• 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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/13.jpg)
EfectosPlantillasSelector de plantillas
Más… Xamarin.Forms 2.1 pre
![Page 14: Novedades Xamarin.Forms 2](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/18.jpg)
Están disponibles en GitHub:
http://www.github.com/josueyeray/xamarinforms2
Estos ejemplos…
![Page 19: Novedades Xamarin.Forms 2](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/19.jpg)
Get Started Todayxamarin.com
![Page 20: Novedades Xamarin.Forms 2](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/21.jpg)
evolve.xamarin.-com
![Page 22: Novedades Xamarin.Forms 2](https://reader035.vdocuments.mx/reader035/viewer/2022070518/58e6009c1a28ab09478b61e9/html5/thumbnails/22.jpg)
Thank You! Questions?Yeray JuliánTech lead & founder @
Devsdna.com/blog
@josueyeray