[Podcast] Todas las novedades de Xamarin de los últimos meses

Head Phone-05-WFIntroducción

Si algo esta caracterizando las entradas del blog de este año es por su variedad en formatos. A los clásicos artículos técnicos se le han sumado formatos nuevos como el VideoBlog, artículos donde se incluye un video creando y analizando código por ejemplo. Siguen existiendo gran variedad de formatos y formas de compartir y ayudar entre todos. Bruno Capuano, arrancó hace poco un nuevo formato, el de los podcasts donde poder reunir a diferentes miembros de la comunidad para tener charlas donde abordar diferentes temáticas técnicas. Un formato divertido y ameno que puede ser consumido en diferentes situaciones, desde el coche en un viaje a continuar desarrollando con el mismo de fondo.

El podcast

Ante la enorme cantidad de cambios y novedades que han llegado desde Xamarin en los últimos meses, ¿algo mejor que reunirnos e ir comentándolas una a una?. Desde el anuncio de compra por parte de Microsoft hasta las últimas novedades presentadas en el Evolve pasando por supuesto por el Build, charlamos sobre cada uno de los cambios destacados en Xamarin.

Podcast
Podcast

Muchas gracias a Bruno por la invitación al podcast, esperamos que os guste!

Más información

[Material SVQXDG] Sevilla Xamarin Dev Day

RDXWoY7W_400x400El evento

El pasado 06 de Abril, desde el grupo SVQXDG, desarrolladores Xamarin de Sevilla, organizábamos el Sevilla Xamarin Dev Day. Un evento donde tener hueco a sesiones técnicas, analizar y aclarar cualquier duda relacionada con los últimos anuncios del //BUILD 2016 además de tener momento para el networking y algun que otro detalle con los asistentes.

El material

En mi caso, pude participar con una sesión casi obligatoria donde repasábamos los cambios fundamentales anunciados en el pasado //BUILD como:

  • Xamarin incluido sin coste adicional en todas las versiones de Visual Studio.
  • Xamarin Core o Xamarin.Forms Open Source.
  • La integración de Xamarin Insights a HockeyApp.
  • Otros aspectos como el progreso de Xamarin Test Cloud, Xamarin University, etc.

La presentación utilizada la tenéis disponible a continuación:

Posteriormente, continuamos con una sobre de desarrollo con Xamarin.Forms, donde vimos todas las claves para adaptar las aplicaciones a tabletas.

En cuanto a las demos técnicas realizadas, las tenéis disponible en GitHub:

Ver GitHub

Quisiera terminar añadiendo algunos agradecimientos a Josué Yeray y Marcos Cobeña por participar junto a un servidor en las sesiones y por supuesto, muchas gracias a todos los asistentes.

Más información

[Evento SVQXDG] Sevilla Xamarin Dev Day

Xamarin LogoEl evento

En Sevilla, existen empresas y desarrolladores con un enorme talento utilizando Xamarin para sus desarrollos de Apps móviles. Con este crisol nació SVQXDG, o lo que es lo mismo, grupo de desarrolladores Xamarin de Sevilla. Es un grupo de usuario donde se busca tener un punto habitual de reunión para ayudar, compartir y aprender entre todos.

Continuamos con fuerza en el grupo organizando un nuevo evento completo con múltiples sesiones buscando cubrir múltiples aspectos relacionados con el desarrollo de aplicaciones Xamarin.

Tendremos la siguiente agenda:

  • 18:00h – 18:45h: Adaptar Apps Xamarin.Forms a teléfonos y tabletas. En esta sesión de la mano de Javier Suárez veremos como adaptar nuestras aplicaciones para otorgar la mejor experiencia posible en teléfonos y tabletas. Como adaptar vistas, tener vistas específicas, adaptar navegación o detectar DPIs y tamaño de pantalla serán algunos de los puntos que veremos.
  • 18:50h – 19:35h: Gestión de notificaciones Push en Apps Xamarin con Azure. Josué Yeray nos enseñará en esta sesión como usar notifications hubs de Azure para enviar notificaciones facilmente a cualquier plataforma. Veremos como funcionan las notificaciones push en cada plataforma así como implementarlas de forma sencilla.
  • 18:40h – 20:25h: Trucos y claves de App Xamarin hasta su llegada en la Store. Terminaremos el evento con una completa sesión de Marcos Cobeña en la que nos mostrará los detalles y claves a tener en cuenta en el desarrollo de una App Xamarin real ¡Buenos días! aro, desde su desarrollo hasta tenerla en la Store.

El lugar

El evento se celebrará en la ETS de Ingeniería Informática. Dirección detallada:

E.T.S. Ingeniería Informática – Universidad de Sevilla
Av. Reina Mercedes s/n
Sevilla Se 41012

ETS Ingeniería Informática
ETS Ingeniería Informática

La fecha

El evento tendrá lugar el próximo Miércoles, 06 de Abril de 18:00h a 20:30h. Tendremos tres sesiones de 45 minutos de duración cada una.

¿Te apuntas?

Más información

Seville Microsoft Communities Day

hero-estuUniversity Tour 2016

El próximo 10 de Marzo en la Escuela Superior de Informática de Sevilla tiene lugar el University Tour 2016. Un evento diseñado tanto para estudiantes como para profesores donde se enseñan las tecnologías que más se usan a día de hoy. Aspectos como la gestión del ciclo de vida del software con metodologías ágiles, como hacer un desarrollo para todas las plataformas móviles que se usan actualmente, o como aprovechar todos los recursos que la nube pone a nuestra disposición.

Comunidades técnicas .NET Sevilla

En Sevilla contamos con grandes profesionales y empresas focalizadas en el trabajo en diferentes vertientes utilizando .NET y tecnologías Microsoft. No es de extrañar, que ante tantas variedades, inquietudes y opciones se cuente con una gran diversidad de comunidades técnicas relacionadas con tecnologías Microsoft.

El evento

El día 09 de Marzo las comunidades técnicas .NET de Sevilla aprovechando la presencia de compañeros de DX de Microsoft, vamos a organizar un evento con la siguiente agenda:

• 19:00h – 20:15h Pero… C# no es un lenguaje de programación funcional, ¿verdad? por Alejandro Campos.

C# es un lenguaje de programación multi-paradigma que soporta expresiones lambda desde el año 2007, y al que se le han ido añadiendo muchas características de programación funcional durante los últimos 10 años. Conoce C# 6.0, y cómo se ha convertido en uno de los mejores lenguajes de programación gracias a todas estas características. Aunque lleves años desarrollando con este lenguaje, esta sesión puede cambiarte la manera de utilizarlo de ahora en adelante.

• 20:15h – 21:00h Creando aplicaciones multiplataforma con Xamarin por Javier Suárez y Marcos Cobeña.

En esta sesión conoceremos todas las posibilidades que ofrece Xamarin para crear aplicaciones móviles nativas multiplataforma. Además, revisaremos principales herramientas y servicios destinados a mejorar nuestra productividad o búsqueda de la calidad.

¿Te apuntas?

El lugar

El evento se celebrará en la ETS de Ingeniería Informática. Dirección detallada:

E.T.S. Ingeniería Informática – Universidad de Sevilla
Av. Reina Mercedes s/n
Sevilla Se 41012

Más información

[Material dotNetSpain2016] No better time to be a .NET developer!

microsoft_.net_logoHace un año…

Tenía lugar la dotNet Spain Conference. Fueron dos días, 27 y 28 de Febrero del 2015 convirtiéndose en el mayor evento de .NET cubriendo todo el espectro, desde .NET MicroFramework a desarrollo de Apps, Cloud, IoT, soluciones ERP, etc. Sin duda un éxito rotundo con más de 1100 asistentes y grandes sensaciones. Motivos suficientes para no sorprenderse ante el regreso este año del mayor evento .NET del año, con más sesiones, sorpresas y todo lo necesario para volver a ser un enorme éxito.

Cifras de vértigo

Microsoft celebraba el pasado 24 de Febrero en Kinépolis Ciudad de la Imagen de Madrid, la dotNet Conference 2016. El evento más grande para la comunidad .NET del año. Y vaya si la comunidad ha respondido. Con más de 1700 asistentes y nada menos que 5000 seguidores vía streaming, el evento vuelve a ser este año un éxito aún mayor que el año anterior.

El evento

Completo de grandes sesiones técnicas y sorpresas, el evento comenzó con la keynote de Jose Bonnin. En ella se realizó un repaso de lo que depara el futuro de la tecnología en general y la implicación de .NET en ellas.

Keynote Jose Bonnín
Keynote Jose Bonnín

Tras la keynote, tuvimos las primeras 8 sesiones técnicas en paralelo justo antes del «gran momento», ese momento que fue durante un periodo una sorpresa y acabo resultando nada más y nada menos que la keynote de Satya Nadella, CEO de Microsoft.

"No hay mejor momento para ser desarrollador .NET" Satya Nadella
«No hay mejor momento para ser desarrollador .NET» Satya Nadella

Tras la keynote continuamos con hasta 32 sesiones técnicas más!.

Los Stands

El evento no hubiese sido posible sin la gran participación de empresas donde algunos stands mostraban proyectos o demos bastante interesantes (Oculus, drones, IoT, etc.) además de algún concurso divertido en el conseguir algún premio extra. Mención especial al espectacular stand que tuvimos en Plain Concepts donde causó sensación el divertido concurso con preguntas de C# y .NET:

¿Cuántas acertaste?
¿Cuántas acertaste?

También bastante interesante el Stand de Microsoft donde se podían probar los últimos Lumias pero además había apartados donde poder hablar con MSPs, resolver dudas con MVPs, etc.

Sorpresa final!

Jose Bonnin en sy Keynote ya anunció que tendríamos una conferencia vía Skype a última hora de la tarde. Llegado el momento se conectó vía Skype nada menos que con Scott Hanselman, Scott Hunter y David Carmona, para anunciar que Microsoft había alcanzado un acuerdo con Xamarin para realizar el proceso de compra!

Xamarin se une a Microsoft!
Xamarin se une a Microsoft!

Vaya forma más bestial de terminar un evento, que ya hasta ese momento había sido genial en organización y contenido.

¿No pudiste asistir?

Si no pudiste asistir, te agradará saber que tanto las keynotes como las sesiones del track web están disponibles en Channel 9urante el evento Channel 9. También se está recopilando el material de cada sesión del evento.

El material

He tenido en placer de poder participar en el evento con una sesión acerca de productividad en Xamarin en el Track de desarrollo Cross Platform.

En la sesión
En la sesión

La presentación utilizada disponible en SlideShare.

Comenzamos la sesión con una demo realizada en Xamarin.Forms 2.0 utilizando:

  • Animaciones
  • Custom Renders
  • Estilos y plantillas
  • Novedades de Xamarin.Forms 2.0 como XAML compilado, etc.
dotNetSpain2016
dotNetSpain2016

El objetivo era agrupar las últimas características de Xamarin.Forms en una aplicación para poder mostrar el uso Gorilla Player. Creado por UXDivers, el objetivo principal de Gorilla Player es permitir ver cualquier cambio visual en layouts, estilos o imágenes de forma inmediata sin necesidad de compilar.

Tras realizar modificaciones de Layout, estilos, pruebas con datos de prueba o la detección de errores de marcado, pasamos a inspeccionar la aplicación a fondo con Xamarin Inspector. Realizamos algunas pruebas al vuelo como peticiones a servicios web, pruebas con colores o modificaciones de elementos visuales para terminar detectando problemas en UI en la aplicación anterior y dando solución a las mismas.

La siguiente demo fue realizada en directo. Utilizamos Continuos Coding de Frank A. Krueger. La propuesta de Continuous Coding es reducir al máximo el ciclo de compilar y ejecutar permitiendo en tiempo real evaluar el código tanto de la lógica como por puesto a nivel de UI. Poder contruir la interfaz al vuelo viendo directamente los resultados de cada línea aplicada además de poder enlazar la misma con la lógica y el backend segun vamos escribiendo.

Así que, ni cortos ni perezosos, creamos un nuevo proyecto donde realizamos paso a paso una aplicación que mostrase la información meteorológica del tiempo en Madrid. Desde la petición al servicio a la definición de la interfaz, sin recompilar y viendo en todo momento información relacionada con excepciones o alertas relacionadas con nuestro código.

Continuamos hablando de calidad. Utilizando una aplicación completa de una calculadora:

Nuestra calculadora
Nuestra calculadora

Vimos como no solo crear pruebas unitarias sino también de UI. Tras utilizar el REPL pasamos a utilizar Xamarin Test Recorder viendo como simplificar enormemente el proceso de creación de los tests. También utilizamos Xamarin Test Cloud para pasar las pruebas en varios dispositivos viendo resultados.

Y para terminar, utilizamos Visual Studio Team Services en conjunto a MacInCloud y HockeyApp para realizar integración continua además de entrega continua de nuestras aplicaciones Xamarin.

CI en Android
CI en Android

Una sesión bastante completa, la hora y 15 minutos dan para poder interactuar más con los asistentes y permitir el lujo de tirar muchas líneas en directo. Otro acierto en mi opinión la duración.

En cuanto a las demos técnicas realizadas, las tenéis todas disponibles en GitHub:

Ver GitHub

Por el feedback recibido y correos con dudas parece que gustó mucho.

Me gustaría terminar agradeciendo a organizadores, ponentes y asistentes por hacer el posible el evento. Ante la cantidad y calidad de sesiones, los grandes momentos de networking, sorpresas, concursos y grandes momentos, no puedo terminar de otra forma que no sea…

¿Repetimos?

Más información

[VideoBlog] Acelerando el desarrollo en Xamarin

Introducción

Cada vez que nos llega a los desarrolladores un nuevo SDK, es un momento especial con una mezcla de altísima curiosidad y ganas de probar novedades. Entre las novedades principales siempre hay nuevas APIs, controles y otros elementos para poder realizar Apps que antes no eran posibles. Sin embargo, entre el conjunto de novedades siempre suelen venir nuevas herramientas que facilitan ciertas tareas: obtener más analíticas, mejores medidores de rendimiento, crear pruebas de UI, etc.

A parte de las herramientas oficiales que nos llegan por otro lado, la incansable comunidad sigue su ritmo lanzando su propias herramientas. En el VideoBlog de hoy nos centramos en las últimas herramientas más destacadas que llegan de la comunidad para facilitarnos la vida y aumentar nuestra productividad.

Continuous Coding, Xamarin.Forms Player y Gorilla Player

Trataremos tres herramientas diferentes:

  • Xamarin.Forms Player: El objetivo principal es permitir ver cualquier cambio visual en layouts, estilos o imágenes de forma inmediata sin necesidad de compilar.
  • Gorilla Player: Ver cambios de UI al vuelo en una App Xamarin.Forms además de poder usar datos de prueba, modificar estilos o detectar errores de marcado XAML.
  • Continuous Coding: La propuesta es reducir al máximo el ciclo de compilar y ejecutar permitiendo en tiempo real evaluar el código tanto de la lógica como por puesto a nivel de UI. Poder contruir la interfaz al vuelo viendo directamente los resultados de cada línea aplicada además de poder enlazar la misma con la lógica y el backend segun vamos escribiendo.

Recordar que cualquier sugerencia o duda la podéis dejar en los comentarios tanto del blog como del video.

Más información

[Xamarin.Forms] Diferentes plantillas en listado, utilizando DataTemplateSelectors

Black List-WFLlega Xamarin.Forms 2.1

Tras el lanzamiento de Xamarin.Forms 2.0 con grandes novedades como el soporte Preview de UWP o las importantes mejoras en rendimiento, todo continua su curso y tenemos ya disponible Xamarin.Forms 2.1. Contamos con las siguientes mejoras:

  • Efectos: Los efectos llegan como una nueva forma de personalizar aspecto y comportamiento de controles sin necesidad de realizar Custom Renders.
  • ControlTemplates: TemplatedPage y TemplatedView sirven ahora como clase base para ContentPage y ContentView. Se pueden usar para definir la apariencia de un control o página manteniendo una clara separación entre la jerarquía visual y el contenido.
  • DataTemplateSelectors: Poder elegir en tiempo de ejecución la plantilla a utilizar en cada elemento un listado.
  • Otros: Añadida virtualización en UWP, corrección de bugs, etc.

En este artículo vamos a centrarnos en el uso de DataTemplateSelectors en Xamarin.Forms.

DataTemplateSelectors

El objetivo de nuestro ejemplo será mostrar diferentes elementos a nivel visual en un listado. Por ejemplo, en un listado mostrando las actividades del día para una agenda, mostrar de forma visual los elementos de forma diferenciada cada tipo de actividad.

Vamos a crear un ejemplo con el ya utilizado previamente listado de monos. Algunos de ellos contarán con foto disponible mientras que otros no. Vamos a utilizar una plantilla diferente en cada caso.

Comenzamos creando en la viewmodel de la vista una colección con nuestros monos:

public ObservableCollection<Monkey> Monkeys { get; set; }

Para centrar la atención absoluta en el uso de diferentes plantillas, la carga de monos la haremos de la forma más simple posible:

private void LoadMonkeys()
{
     Monkeys = new ObservableCollection<Monkey>();

     Monkeys.Add(new Monkey
     {
          Name = "Baboon",
          Description = "Baboons are African and Arabian Old World monkeys belonging to the genus Papio, part of the subfamily Cercopithecinae.",
          Image = "http://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Papio_anubis_%28Serengeti%2C_2009%29.jpg/200px-Papio_anubis_%28Serengeti%2C_2009%29.jpg"
     });

     Monkeys.Add(new Monkey
     {
          Name = "Capuchin Monkey",
          Description = "The capuchin monkeys are New World monkeys of the subfamily Cebinae. Prior to 2011, the subfamily contained only a single genus, Cebus."
     });

     Monkeys.Add(new Monkey
     {
          Name = "Blue Monkey",
          Description = "The blue monkey or diademed monkey is a species of Old World monkey native to Central and East Africa, ranging from the upper Congo River basin east to the East African Rift and south to northern Angola and Zambia"
     });

     ...
}

Creamos directamente una colección local. Como podemos ver, cada mono esta representado por nombre, descripción y foto. Sin embargo, algunos de ellos no cuentan con foto. En nuestra interfaz:

<ListView
     x:Name="list"
     ItemsSource="{Binding Monkeys}"
     CachingStrategy="RecycleElement">
</ListView>

Utilizaremos un ListView bindeado a la colección de monos.

NOTA: Desde Xamarin.Forms 2.0, el control ListView recibe una nueva propiedad llamada CachingStrategy para esteblecer el tipo de cacheo realizado.

Para la representación de elementos podemos utilizar la propiedad ItemTemplate del control junto a una plantilla. En nuestro caso, deseamos que los elementos con foto se muestren de forma diferente a cuando no contamos con foto.

Crearemos dos plantillas. Por un lado la plantilla para elementos con foto:

<DataTemplate x:Key="MonkeyTemplate">
     <ViewCell Height="200">
          <ViewCell.View>
            <Grid BackgroundColor="#d3d3d3">
              <Grid.RowDefinitions>
                <RowDefinition Height="20" />
                <RowDefinition Height="30" />
              </Grid.RowDefinitions>
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="40" />
              </Grid.ColumnDefinitions>
              <Label Grid.Row="0" Grid.Column="0"
                     Text="{Binding Name}" LineBreakMode="TailTruncation" />
              <Label Grid.Row="1" Grid.Column="0"
                     Text="{Binding Description}" Font="Small" TextColor="Gray" 
                     LineBreakMode="TailTruncation" />
              <Image Grid.Row="0" Grid.RowSpan="2" Grid.Column="1"
                     Source="{Binding Image}" Aspect="AspectFill" />
            </Grid>
          </ViewCell.View>
     </ViewCell>
</DataTemplate>

Sin foto:

<DataTemplate x:Key="NoPhotoTemplate">
     <ViewCell>
          <ViewCell.View>
            <StackLayout BackgroundColor="#d3d3d3">
              <Label Text="{Binding Name}" HorizontalOptions="End" />
              <Label Text="{Binding Description}" HorizontalOptions="Start"
                     Font="Small" TextColor="Gray" />
            </StackLayout>
          </ViewCell.View>
     </ViewCell>
</DataTemplate>

Llega el momento de añadir la lógica específica para asociar la plantilla adecuada a cada elemento en tiempo de ejecución. Crearemos una clase derivada de DataTemplateSelector:

public class MonkeyDataTemplateSelector : DataTemplateSelector

La clave la clase será el método OnSelectTemplate. Este método se lanzará por cada elemento del listado y es donde añadiremos la lógica específica para seleccionar la plantilla correspondiente. En nuestro ejemplo, crearemos dos variables de tipo DataTemplate donde tendremos cada una de las plantillas previas creadas en los recursos de la aplicación.

public class MonkeyDataTemplateSelector : DataTemplateSelector
{
     private readonly DataTemplate _monkey;
     private readonly DataTemplate _noPhoto;

     public MonkeyDataTemplateSelector()
     {
         _monkey = (DataTemplate)App.Current.Resources["MonkeyTemplate"];
         _noPhoto = (DataTemplate)App.Current.Resources["NoPhotoTemplate"];
     }

     protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
     {
         if (item is Monkey)
         {
             if(!string.IsNullOrEmpty(((Monkey)item).Image))
                 return _monkey;
         }

         return _noPhoto;
     }
}

Verificamos que el tipo de objeto bindeado en cada elemento es de tipo Monkey y verificamos si cuenta con foto o no. Dependiendo de ello, devolveremos una plantilla u otra.

En nuestra interfaz, utilizaremos el selector de plantilla en la propiedad ItemTemplate:

<ListView
     x:Name="list"
     ItemsSource="{Binding Monkeys}"
     CachingStrategy="RecycleElement">
     <ListView.ItemTemplate>
       <template:MonkeyDataTemplateSelector/>
     </ListView.ItemTemplate>
</ListView>

Todo listo!. Sencillo, ¿cierto?. Si ejecutamos la aplicación:

DataTemplateSelector en Xamarin.Forms
DataTemplateSelector en Xamarin.Forms

Podemos ver como aquellos monos que no cuentan con foto, además de no mostrarla, su nombre se encuentra alineado a la derecha.

Tenéis el código fuente disponible e GitHub:

Ver GitHub

Recordad que podéis dejar cualquier comentario, sugerencia o duda en los comentarios.

A tener en cuenta

Contamos con una serie de detalles y limitaciones a tener en cuenta:

  • En Android no podemos utilizar más de 20 plantillas por listado.
  • Un DataTemplateSelector no puede devolver otro.
  • El DataTemplateSelector no debe devolver una nueva instancia de cada DataTemplate en cada llamada, debería de usarse la misma.Cuidado con este punto si no deseamos obtener de forma sencilla Memory Leaks.

Más información

[VideoBlog] Animaciones en Xamarin.Forms

Animation02Introducción

En todas las plataformas, las aplicaciones móviles incluyen animaciones que otorgan movimiento, fluidez y focalizan la atención del usuario en las zonas deseadas. Actualmente no son un extra o añadido en las aplicaciones, sino una parte importante en la experiencia y usabilidad de las mismas.

Como desarrolladores, debemos no solo cuidar por supuesto el correcto funcionamiento de la aplicación, sino que debemos preocuparnos también por la usabilidad y la experiencia otorgada, donde entran en juego las animaciones.

Por ello, abordamos un nuevo VideoBlog totalmente centrado en el uso de animaciones en Xamarin.Forms.

Animaciones en Xamarin.Forms & Xamanimation

Xamarin.Foms incluye una serie de métodos de extensión que nos permiten realizar una completa gestión de animaciones desde código C#.

Por un lado tenemos disponibles una serie de animaciones predefinidas disponibles como métodos de extensión para elementos de tipo View. Contamos con animaciones para realizar rotaciones, escalados, tralaciones, etc. En caso de necesitar animaciones más complejas podemos utilizar las extensiones de animación. Contamos con varias sobrecargas del método Animate que nos permite definir animaciones más complejas.

Para complementar y expandir las posibilidades contamos con Xamanimation. Es es una librería gratuita destinada para Xamarin.Forms que tiene como objetivo facilitar el uso de animaciones a los desarrolladores. Añade un conjunto de animaciones de uso muy sencillo tanto desde código C# como desde código XAML. Podemos definir animaciones en XAML a un elemento visual al cargar mediante un Behavior, usar un trigger en XAML para ejecutar la animación a voluntad al lanzar el trigger o bien desde código C#.

Más información

[Material SVQXDG] Xamarin 4 Party

Xamarin4El evento

El pasado 26 de Enero, desde el grupo SVQXDG, desarrolladores Xamarin de Sevilla, organizábamos la Xamarin 4 Party.
Un evento donde tener hueco a sesiones técnicas sobre las últimas
novedades introducidas en Xamarin 4 además de tener momento para la
diversión con concurso y entrega de premios, networking y.. tarta!

Comenzamos con una breve introducción al grupo, agenda y detalles para continuar abordando, de la mano de un servidor, un repaso completo a novedades en Xamarin 4:

Novedades en Xamarin 4
Novedades en Xamarin 4

Continuamos junto a Josué Yeray centrándonos en las novedades de Xamarin.Forms 2.0:

Xamarin.Forms 2.0
Xamarin.Forms 2.0

Para cerrar las sesiones técnicas, Marcos Cobeña continuo hablando de calidad de aplicaciones móviles con Xamarin UITest, Test Recorder y Test Cloud:

Testing
Testing

Hicimos un concurso basado en preguntas para decidir el sorteo de una subscripción anual Business de iOS y Android además de libros de desarrollo Xamarin.Forms de Charles Petzold junto a por supuesto los ansiados monitos, pegatinas, bolígrafos, etc.

Se les ve entregados, ¿verdad?
Se les ve entregados, ¿verdad?

Terminamos el evento de forma relajada, haciendo networking y compartiendo esta magnífica tarta:

Que rica!
Que rica!

El material

En mi
caso, además de la introducción y el divertido concurso, pude participar
en el evento con una introducción a novedades en Xamarin 4 donde vimos:

  • Mejoras en la integración con el IDE.
  • Nuevas herramientas.
  • Novedades en Xamarin Forms 2.0.
  • Novedades en Xamarin Test Cloud.
  • Novedades en Xamarin Insights.

La presentación utilizada:

En cuanto a las demos técnicas realizadas, las tenéis disponible en GitHub:

Ver GitHub

Quisiera terminar añadiendo algunos agradecimientos a DevsDna por patrocinar el evento; a Plain Concepts por facilitarme siempre la participación (y a mi compañero Marcos Cobeña); por supuesto a Xamarin por todo su apoyo y material que nos han facilitado; gracias a Josué Yeray y Marcos Cobeña por participar y por sus sesiones y por supuesto, muchas gracias a todos los asistentes. Sin duda, fue muy divertido y momentos como concurso y tarta dieron momentos especiales.

Más información

[Xamarin.Forms] Utilizando Xamarin Forms Player, acelerando el desarrollo

Introducción

Xamarin.Forms es un framework que permite crear
aplicaciones nativas para Android, iOS y Windows compartiendo además de
la lógica en C#, las vistas en XAML. Un enfoque muy
interesante que suele tener una atracción enorme debido a sus
posibilidades en cuanto a la cantidad de código compartido. A mayor
cantidad de código compartido, menor cantidad de código a hacer por
plataforma, menos costes.

Hay desarrolladores XAML experimentados en otros entornos Microsoft
como WPF, Silverlight, Windows Phone o WinRT que de forma programática
pueden desarrollar interfaces de usuario de forma fluida sin necesidad
de gran feedback visual. Sin embargo, muchos usuarios echan de menos ese
feedback visual aportado por un editor visual. A día de hoy, Xamarin.Forms no cuenta con editor visual.

NOTA: En varias ocasiones Xamarin ha reconocido la

Xamarin Forms Player

Una alternativa para lograr el feedback visual viene dado por Xamarin Forms Player creado por Daniel Cazzulino.
Consiste en instalar una extensión para Visual Studio (o Xamarin
Studio) que nos permitirá conectar con un dispositivo en el que mostrar
una previsualización de como queda nuestra vista XAML. De esta forma,
cada vez que realicemos un cambio en nuestra vista XAML podremos
enviarla al dispositivo y ver los cambios.

Configurando el entorno

Necesitaremos:

  • Extensión para Visual Studio o Xamarin Studio
  • App instalada en emulador o dispositivo

Xamarin Studio

Para instalar el plugin en Xamarin Studio vamos al gestor de complementos. Una vez abierto, en la pestaña de Gallery buscamos “Forms Player”.

Instalando Forms Player

Instalando Forms Player

Instalamos y todo listo.

Visual Studio

En Visual Studio abrimos el apartado de Extensiones y actualizaciones, buscamos por “Forms Player”:

Extensión Forms Player

Extensión Forms Player

Instalamos la extensión Xamarin Forms Player.

Dispositivos

Desde el GitHub de Mobile Essentials podremos
descargar el código fuente de Xamarin Forms Player. Una vez descargado
bastará con compilar y desplegar la App en cualquier dispositivo o
emulador.

NOTA: También podemos acceder al apartado de Releases del repositorio para descargar directamente los últimos paquetes compilados.

En el caso de emuladores, bastará con arrastrar el paquete al emulador para realizar la instalación.

Forms Player en GenyMotion

Forms Player en GenyMotion

Utilizando Forms Player

Todo preparado. Creamos un nuevo proyecto Xamarin.Forms utilizando una PCL:

Nuevo proyecto

Nuevo proyecto

Una vez creado el proyecto añadiremos el paquete de “Forms Player” en los proyectos específicos de plataforma.

Paquete NuGet

Paquete NuGet

A continuación, modificamos la carga de la aplicación en cada proyecto específico de plataforma para reemplazar new App() por new Xamarin.Forms.Player.App().

Al depurar la App debemos sincronizar la sesión utilizada
introduciendo en el dispositivo el identificador que nos facilitar Forms
Player.

Llegados  a este punto lo tenemos todo preparado. Llega el momento de
utizarlo. Abrimos una página XAML, editamos y publicamos los cambios.

Utilizando Xamarin Forms Player

Utilizando Xamarin Forms Player

Voila!. Cada vez que necesitemos ver cambios bastará con pulsar sobre la opción “Publish” de Forms Player.

Más información