Este documento introduce Windows 10, la convergencia entre dispositivos, y la plataforma universal de Windows. Se describe cómo las aplicaciones pueden ejecutarse en cualquier dispositivo a través de una única tienda, SDK y herramientas. También se explican las opciones para diseñar interfaces adaptativas y usar extensiones de plataforma específicas.
Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad...Javier Suárez Ruiz
Nuestro objetivo como desarrolladores es crear aplicaciones útil y atractivas pero sobretodo perfectamente funcionales. Para poder lograr ese objetivo es sin duda muy importante la arquitectura aplicada a la App. En esta sesión repasaremos el patrón MVVM aplicándolo a una aplicación Xamarin en cada una de las plataformas paso a paso así como la cantidad de código que se puede llegar a compartir entre plataformas.
La plataforma Universal Windows facilita gran cantidad de tareas a los desarrolladores para cubrir múltiples escenarios entre diferentes familias de dispositivos. Para facilitar esto, nos llegan novedades en controles XAML además de algunos nuevos, pero además nos llegan gran cantidad de novedades en el sistema de enlace a datos, rendimiento, herramientas, nueva API de perspectiva 3D, además de algunas novedades de peso más. En esta sesión vamos a realizar un repaso sobre todas las novedades en XAML recibidas.
Comenzaremos viendo las posibilidades del control RelativePanel, nuevo control de layout que permite posicionar a los elementos de forma relativa con respecto al panel y ellos mismos facilitando además la adaptación de los elementos de la interfaz ante cambios de orientación o tamaño de pantalla. Además, daremos un vistazo a los Adaptive Triggers utilizados en XAML para detectar condiciones de entorno como distintos tamaños de pantalla permitiéndonos aplicar distintos estados visuales para adaptar la interfaz a cada dispositivo.
Vemos cómo con Visual Studio Online podemos gestionar el ciclo de vida completo de nuestro proyecto con metodologías ágiles, así como gestionar nuestro código fuente y automatizar la compilación o las pruebas incluidas desde recientemente Apps Xamarin.
Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad...Javier Suárez Ruiz
Nuestro objetivo como desarrolladores es crear aplicaciones útil y atractivas pero sobretodo perfectamente funcionales. Para poder lograr ese objetivo es sin duda muy importante la arquitectura aplicada a la App. En esta sesión repasaremos el patrón MVVM aplicándolo a una aplicación Xamarin en cada una de las plataformas paso a paso así como la cantidad de código que se puede llegar a compartir entre plataformas.
La plataforma Universal Windows facilita gran cantidad de tareas a los desarrolladores para cubrir múltiples escenarios entre diferentes familias de dispositivos. Para facilitar esto, nos llegan novedades en controles XAML además de algunos nuevos, pero además nos llegan gran cantidad de novedades en el sistema de enlace a datos, rendimiento, herramientas, nueva API de perspectiva 3D, además de algunas novedades de peso más. En esta sesión vamos a realizar un repaso sobre todas las novedades en XAML recibidas.
Comenzaremos viendo las posibilidades del control RelativePanel, nuevo control de layout que permite posicionar a los elementos de forma relativa con respecto al panel y ellos mismos facilitando además la adaptación de los elementos de la interfaz ante cambios de orientación o tamaño de pantalla. Además, daremos un vistazo a los Adaptive Triggers utilizados en XAML para detectar condiciones de entorno como distintos tamaños de pantalla permitiéndonos aplicar distintos estados visuales para adaptar la interfaz a cada dispositivo.
Vemos cómo con Visual Studio Online podemos gestionar el ciclo de vida completo de nuestro proyecto con metodologías ágiles, así como gestionar nuestro código fuente y automatizar la compilación o las pruebas incluidas desde recientemente Apps Xamarin.
Ante la llegada de Windows 10, en XAML recibimos nuevos controles para poder dar la mejor experiencia posible en cada dispositivo. En consecuencia, hay novedades en XAML, mejoras en rendimiento, nuevas herramientas, nuevas APIs de perspectiva 3D, etc. En esta sesión veremos todas las novedades.
La integración continua es fundamental en el desarrollo de software, independientemente de la plataforma. Detectar problemas tan pronto como sea posible es una gran victoria, sobre todo en el mundo móvil. Veremos cómo ejecutar pruebas como parte del proceso de Build, que cubren las pruebas unitarias, etc.
Introducción a todas las novedades presentadas en Xamarin 4. Tratamos Xamarin.Forms 2.0, Xamarin Test Recorder, Xamarin Test Cloud o Xamarin Insights entre otros puntos.
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinJavier Suárez Ruiz
Sesión del Codemotion 2015 donde repasamos conceptos de pruebas unitarias con Xamarin, pruebas de interfaz, Test Cloud e integración continua con Team City.
El mercado móvil es hoy día un pilar importante tanto para usuarios como para desarrolladores. Sin embargo, tenemos un mercado amplio y diverso con una gran variedad de dispositivos y sistemas. Si entramos en el terrero de desarrolladores el problema se acentúa con diferentes entornos de desarrollo, lenguajes y otros elementos. En esta sesión repasaremos el estado actual, introduciremos Xamarin como herramienta para crear aplicaciones nativas multiplataforma desde Visual Studio analizando todas sus bondades y costes además de ver distintas opciones Xamarin Classic y Xamarin.Forms.
Ante la llegada de Windows 10, en XAML recibimos nuevos controles para poder dar la mejor experiencia posible en cada dispositivo. En consecuencia, hay novedades en XAML, mejoras en rendimiento, nuevas herramientas, nuevas APIs de perspectiva 3D, etc. En esta sesión veremos todas las novedades.
Ahora es posible ofrecer grandes experiencias también en Xbox con XAML y C#. Las aplicaciones UWP desembarcan en Xbox!. En esta sesión aprenderemos los conceptos necesarios para diseñar y optimizar experiencias con pantalla grande o el uso de gamepad además compartiendo grandes cantidades de código con otras familias de dispositivos. ¿Te apuntas?
¿Tienes una aplicación iOS?, ¿quieres reaprovechar tus conocimientos y código Objective-C para acceder a la plataforma universal Windows?. En esta sesión conoceremos el Bridge de Windows para iOS, convertiremos algunas aplicaciones iOS a UWP e incluso veremos como añadir características específicas de la plataforma Windows como el uso de Live Tiles por ejemplo.
El ecosistema Xamarin no cesa en las herramientas de desarrollo. Tenemos a dispositivos una gran variedad de servicios destinados a complementar el mismo, analíticas, testing, análisis de rendimiento, etc. En esta sesión vamos a hacer un repaso por todos los servicios disponibles realizando demos de cada uno de ellos.
En esta sesión 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.
Vemos las nuevas plantillas y herramientas disponibles para hacer Apps, las bases de UAP viendo el SDK de extensiones además de analizar técnicas para crear interfaces adaptativas a cualquier dispositivo utilizando nuevos controles como el panel RelativePanel, el SplitView o con las novedades en estados visuales, los Adaptive Triggers.
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Javier Suárez Ruiz
En esta sesión sobre desarrollo Windows 10 repasamos el ciclo de vida de aplicaciones, cómo utilizar el modo de ejecución extendido, tareas en background y comunicación entre Apps con Apps Services.
Ante la llegada de Windows 10, en XAML recibimos nuevos controles para poder dar la mejor experiencia posible en cada dispositivo. En consecuencia, hay novedades en XAML, mejoras en rendimiento, nuevas herramientas, nuevas APIs de perspectiva 3D, etc. En esta sesión veremos todas las novedades.
La integración continua es fundamental en el desarrollo de software, independientemente de la plataforma. Detectar problemas tan pronto como sea posible es una gran victoria, sobre todo en el mundo móvil. Veremos cómo ejecutar pruebas como parte del proceso de Build, que cubren las pruebas unitarias, etc.
Introducción a todas las novedades presentadas en Xamarin 4. Tratamos Xamarin.Forms 2.0, Xamarin Test Recorder, Xamarin Test Cloud o Xamarin Insights entre otros puntos.
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinJavier Suárez Ruiz
Sesión del Codemotion 2015 donde repasamos conceptos de pruebas unitarias con Xamarin, pruebas de interfaz, Test Cloud e integración continua con Team City.
El mercado móvil es hoy día un pilar importante tanto para usuarios como para desarrolladores. Sin embargo, tenemos un mercado amplio y diverso con una gran variedad de dispositivos y sistemas. Si entramos en el terrero de desarrolladores el problema se acentúa con diferentes entornos de desarrollo, lenguajes y otros elementos. En esta sesión repasaremos el estado actual, introduciremos Xamarin como herramienta para crear aplicaciones nativas multiplataforma desde Visual Studio analizando todas sus bondades y costes además de ver distintas opciones Xamarin Classic y Xamarin.Forms.
Ante la llegada de Windows 10, en XAML recibimos nuevos controles para poder dar la mejor experiencia posible en cada dispositivo. En consecuencia, hay novedades en XAML, mejoras en rendimiento, nuevas herramientas, nuevas APIs de perspectiva 3D, etc. En esta sesión veremos todas las novedades.
Ahora es posible ofrecer grandes experiencias también en Xbox con XAML y C#. Las aplicaciones UWP desembarcan en Xbox!. En esta sesión aprenderemos los conceptos necesarios para diseñar y optimizar experiencias con pantalla grande o el uso de gamepad además compartiendo grandes cantidades de código con otras familias de dispositivos. ¿Te apuntas?
¿Tienes una aplicación iOS?, ¿quieres reaprovechar tus conocimientos y código Objective-C para acceder a la plataforma universal Windows?. En esta sesión conoceremos el Bridge de Windows para iOS, convertiremos algunas aplicaciones iOS a UWP e incluso veremos como añadir características específicas de la plataforma Windows como el uso de Live Tiles por ejemplo.
El ecosistema Xamarin no cesa en las herramientas de desarrollo. Tenemos a dispositivos una gran variedad de servicios destinados a complementar el mismo, analíticas, testing, análisis de rendimiento, etc. En esta sesión vamos a hacer un repaso por todos los servicios disponibles realizando demos de cada uno de ellos.
En esta sesión 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.
Vemos las nuevas plantillas y herramientas disponibles para hacer Apps, las bases de UAP viendo el SDK de extensiones además de analizar técnicas para crear interfaces adaptativas a cualquier dispositivo utilizando nuevos controles como el panel RelativePanel, el SplitView o con las novedades en estados visuales, los Adaptive Triggers.
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Javier Suárez Ruiz
En esta sesión sobre desarrollo Windows 10 repasamos el ciclo de vida de aplicaciones, cómo utilizar el modo de ejecución extendido, tareas en background y comunicación entre Apps con Apps Services.
Repaso a todos los Bridges destinados a crear aplicaciones universales Windows 10 reutilizando la mayor cantidad de código posible de otras plataformas.
Aprende como crear una aplicación móvil multiplataforma para iOS, Android y Windows con Xamarin.Forms. En este taller organizado en diferentes bloques, vamos a crear una aplicación desde cero, conoceremos todos los conceptos básicos, aplicaremos MVVM y terminaremos conectando la misma con la nube.
Xamarin.Forms es un framework que nos añade una capa de abstracción permitiendo desarrollar la interfaz de nuestras aplicaciones móviles multiplataforma una única vez, compartiendo el código de la UI. Veremos como crear aplicaciones con Xamarin.Forms además de centrarnos en cómo acceder a características propias de cada plataforma mediante la creación de servicios o Custom Renders.
Universal Windows Platform(UWP), Una única plataforma para que los desarrolladores descubran nuevos mercados sin mucho código, aprende sobre los nuevos controles, interfaces y herramientas que proporciona la plataforma de windows 10 a los desarrolladores.
Windows RT, la nueva versión de Windows trae muchos conceptos nuevos y con ellos muchas preguntas. A su vez llega Windows Phone 8 y trae consigo aún más preguntas. ¿Qué novedades a nivel de desarrollo trae Windows 8? ¿Windows Store y Desktop? ¿Y Windows Phone 8? ¿Es una aplicación WP7.5 compatible con WP8? ¿Y al revés? ¿Puedo compartir código entre Windows 8 y Windows Phone 8?
En este evento realizamos una introducción al desarrollo de ambas plataformas analizando las muchas y nuevas disponibles para los desarrolladores. Además resolvimos todas las preguntas anteriores y otras que salieron durante la charla.
Charla de introducción al desarrollo Xamarin - MVVMCross.
La presentación habla más que nada de las ventajas de Xamarin versus el desarrollo híbrido/HTML5, y los beneficios de usar MVVMCross como framework de desarrollo móvil.
Desarrollo multiplataforma de apps con GWT y PhoneGapbetabeers
Transparencias de la charla de Luis Muñoz @munozluis en el primer Betabeers Córdoba, sobre desarrollo multiplataforma de apps móviles, usando Google Web Toolkit (GWT) y Phonegap (Apache Cordova)
Las transparencias de mi charla en el primer Betabeers Córdoba, sobre desarrollo multiplataforma de apps móviles, usando Google Web Toolkit (GWT) y Phonegap (Apache Cordova)
Cape Town MS Developer User Group: Xamarin Community ToolkitJavier Suárez Ruiz
In this session we are going to talk about the Xamarin Community Toolkit, a collection of Animations, Behaviors, Converters Effects and Controls for mobile development with Xamarin.Forms.
We will see what it gives us, how to use it and also how you can contribute!
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Javier Suárez Ruiz
In this session we are going to know the Xamarin Community Toolkit (XCT) along with all the options it offers like controls, converters, behaviors, etc.
In this session we are going to see in depth the new .NET MAUI handlers, a comparison with the Xamarin.Forms renderers as well as other related aspects such as the possibilities when extending or customizing a handler, performance, etc.
En esta sesión vamos a hacer un repaso a las últimas novedades principales introducidas en Xamarin.Forms así como un pequeño vistazo al futuro más inmediato.
A la hora de desarrollar aplicaciones con Xamarin.Forms el rendimiento suele ser un factor a tener en cuenta. En Xamarin.Forms, ¿sabes el ciclo de vida de un Layout?, ¿qué opciones de Layout son más óptimas?, ¿cómo afectan los Bindings al rendimiento y como tratarlos?, ¿qué debemos hacer para optimizar el trabajo con imágenes?, ¿ListView o CollectionView?, ¿y qué ocurre con Shell? A estas y otras preguntas habituales de rendimiento daremos solución, con datos y pruebas en forma de sencillos consejos a tener en cuenta a la hora de desarrollar una aplicación con Xamarin.Forms.
Con Xamarin.Forms podemos definir la interfaz de usuario una única vez para llegar a diferentes plataformas donde Android e iOS suelen ser las plataformas principales pero...¿hasta dónde podemos llegar?. En esta sesión vamos a ver como realizar aplicaciones nativas Web, WPF, Tizen o para Linux con Xamarin.Forms. Además veremos como realizar interfaces complejas combinadas con elementos 3D o cómo gestionar diferentes dispositivos IoT con Xamarin.IoT en combinación con Xamarin.Forms.
1. INTRODUCCIÓN A
WINDOWS 10
Un único paquete, interfaces adaptativas,
nuevos controles, novedades en XAML,
herramientas, etc.
2. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Javier Suárez
Microsoft MVP Windows Platform
Development
• Blog: http://geeks.ms/blogs/jsuarez
• Email: javiersuarezruiz@hotmail.com
• Twitter: @jsuarezruiz
3. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Mayor facilidad para
estar al día
Plataforma de Apps y
Core unificado
EL VIAJE DE LA
CONVERGENCIA
Windows 10
Convergencia a
nivel de kernel
Convergencia en
el modelo de App
4. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Phone Small Tablet
2-in-1s
(Tablet or Laptop)
Desktops
& All-in-OnesPhablet Large Tablet
Classic
Laptop
Xbox IoTSurface Hub HoloLens
Windows 10
5. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
One Store +
One Dev Center
Reuse Existing
Code
One SDK +
Tooling
Adaptive
User Interface
Natural
User Inputs
One Universal Windows Platform
6. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
UNIVERSAL WINDOWS PLATFORM
• UN Sistema operativo
– Mismo core Windows para todos los
dispositivos
• UNA Plataforma de Apps
– Apps corren entre todas las familias de
dispositivos
• UN Dev Center
– Mismo flujo de publicación y dashboard
• UNA Store
– Monetización, negocio, educación
7. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ES SIMILAR A LO CONOCIDO?
• ¿Existe un archivo de manifiesto?
• ¿Existe un Proyecto principal?
• ¿Existe un Proyecto Shared?
• ¿Tenemos directivsa #IF de
• compilación?
8. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
APP WINDOWS
• Un mismo binario
– Corre en cualquier dispositivo
– Ajustable por familia de dispositivo
Phone
Dispositivo
Xbox
Dispositivo
Desktop
Dispositivo
Core Windows
Universal Windows Platform
App Windows
10. Las Apps NO se destinan a Windows 10,
las Apps se destinan a familias de
dispositivos
11. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
EXTENSIONES DE
PLATAFORMA• APIs específicas por familia
– Capacidades específicas por familia
– Compatible entre dispositivos
Phone
Device
Xbox
Device
Desktop
Device
Windows Core
Universal Windows Platform
Windows App
Phone
extension
Xbox
extension
Desktop
extension
12. Las extensions no afectan a los binaries
de otras familias de dispositivos
13. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
EXTENSIONES POR PLATAFORMA
<ItemGroup>
<!-- Reference to the .Net Framework
and Windows SDK are automatic -->
<SDKReference Include="Windows Desktop,
Version=10.0.9910.0"/>
<SDKReference Include="Windows Mobile,
Version=10.0.0.1"/>
</ItemGroup>
16. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
OPCIONES DE DISEÑO PARA
ADAPTAR LA INTERFAZ
• Estrategias de diseño
– Layouts flexibles con tamaños relativos
• Vistas XAML por dispositivo
– Archivos XAML separados con código compartido
• Estados visuales XAML
– Utilizados para escalar y gestionar orientaciones
21. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
VISUAL STATE SETTERS &
TRIGGERS• Setters permite establecer propiedades simples
– La mayoría de propiedades no necesitan animación
• Triggers declarados cuando se aplica un estado
– No necesitamos gestionar eventos en el code-behind
<VisualState x:Name="wideState">
<VisualState.Setters>
<Setter Target="myPanel.Orientation" Value="Horizontal" />
</VisualState.Setters>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
</VisualState>
22. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
TIPOS DE TRIGGER
• MinWindowWidth
• MinWindowHeight
– “Cualquier cosa por encima de este valor”
– Los valores se especifican en píxeles
25. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEVICE FAMILIES
• En Windows 10, podemos distinguir los dispositivos de dos formas:
• Por resolución
• Por familia
26. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEVICE FAMILIES
• Windows 10 ofrece distintas familias de dispositivos:
• Desktop
• Mobile
• Xbox
• IoT
• …
27. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEVICE FAMILIES
• En algunas ocasiones, puede que el cambio de UI entre familias sea más
complejo que una simple reorganización basada en el tamaño
• Incluso, el tamaño nos puede llevar a equívocos.
• Por ejemplo:
• Lumia 1520 1080x1920
• Asus VivoTab 800x1280
• No solo es importante la resolución: pulgadas y familia también lo son.
28. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEVICE FAMILIES
• En estos casos, podemos crear vistas XAML por familia
• Estas vistas no contienen code-behind
• Se cargan por convención de nombre automáticamente
• Podemos seguir usando Adaptative visual states.
31. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Relative Panel es un control de Layout XAML. Posiciona los
elementos estableciendo relaciones entre ellos.
INTRODUCCIÓN AL PANEL
RELATIVE PANELControles de Layout en Windows XAML
Grid
Stack
Panel
Canvas
Scroll
Viewer
Border View Box
Wrap
Grid
Relative
Panel
32. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
RELATIVE PANEL
• Adaptativo
– Relativo al Panel
– Relativo a controles “hermanos”
• Simplifica nuestro XAML
– Simplifica el árbol visual
– Simplifica los estados visuales
33. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ALINEACIÓN CON EL PANEL
<RelativePanel>
<Rectangle x:Name="RedRect"
Height="100" Width="100" Fill="Red"
RelativePanel.AlignHorizontalCenterWithPanel="True"
RelativePanel.AlignVerticalCenterWithPanel="True" />
<Rectangle x:Name="BlueRect"
Height="100" Width="200" Fill="Blue" />
</RelativePanel>
34. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
OPCIONES DE POSICIÓN CON RESPECTO AL PANEL
<Rectangle Height="100" Width="100" Fill="Red"
RelativePanel.AlignLeftWithPanel="True" (default)
RelativePanel.AlignRightWithPanel="True"
RelativePanel.AlignTopWithPanel="True" (default)
RelativePanel.AlignBottomWithPanel="True"
RelativePanel.CenterInPanelHorizontally="True"
RelativePanel.CenterInPanelVertically="True" />
35. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ALINEARSE CON
“HERMANOS”
<RelativePanel>
<Rectangle x:Name="BlueRect"
Height="100" Width="100" Fill="Blue" />
<Rectangle x:Name="RedRect"
Height="100" Width="100" Fill="Red"
RelativePanel.RightOf="BlueRect"
RelativePanel.AlignVerticalCenterWith="BlueRect" />
</RelativePanel>
36. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ALINEARSE CON
“HERMANOS”
<RelativePanel>
<Rectangle x:Name="BlueRect"
Height="100" Width="100" Fill="Blue" />
<Rectangle x:Name="RedRect"
Height="100" Width="100" Fill="Red"
RelativePanel.Below="BlueRect"
RelativePanel.AlignRightWith="BlueRect" />
</RelativePanel>
37. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ALINEARSE CON
“HERMANOS”
<RelativePanel>
<Rectangle x:Name="BlueRect"
Height="100" Width="100" Fill="Blue" />
<Rectangle x:Name="RedRect"
Height="100" Width="100" Fill="Red"
RelativePanel.Below="BlueRect"
RelativePanel.AlignHorizontalCenterWith="BlueRect" />
</RelativePanel>
38. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ALINEARSE CON “HERMANOS”
<RelativePanel>
<Rectangle x:Name="BlueRect"
Height="100" Width="100" Fill="Blue" />
<Rectangle x:Name="RedRect"
Height="100" Width="100" Fill="Red"
RelativePanel.Below="BlueRect"
RelativePanel.AlignLeftWith="BlueRect" />
</RelativePanel>
39. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
OPCIONES DE POSICIONAMIENTO ENTRE “HERMANOS”
<Rectangle Height="100" Width="100" Fill="Red"
RelativePanel.Above="BlueRect"
RelativePanel.RightOf="BlueRect"
RelativePanel.Below="BlueRect"
RelativePanel.RightOf="BlueRect" />
40. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
OPCIONES DE POSICIONAMIENTO ENTRE “HERMANOS”
<Rectangle Height="100" Width="100" Fill="Red"
RelativePanel.AlignTopWith="BlueRect"
RelativePanel.AlignRightWith="BlueRect"
RelativePanel.AlignBottomWith="BlueRect"
RelativePanel.AlignLeftWith="BlueRect"
RelativePanel.AlignHorizontalCenterWith="BlueRect"
RelativePanel.AlignVerticalCenterWith="BlueRect" />
48. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
SPLITVIEW.PANE
<SplitView>
<SplitView.Pane>
<StackPanel>
<RadioButton />
<RadioButton />
</StackPanel>
</SplitView.Pane>
</SplitView>
49. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
SPLITVIEW.CONTENT
<SplitView>
<SplitView.Pane />
<SplitView.Content>
<Frame/>
</SplitView.Content>
</SplitView>
50. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
PROPIEDADES DEL SPLIVIEW
<SplitView
IsPaneOpen="False"
CompactPaneLength="150"
OpenPaneLength="50"
Placement="Right|Left"
PaneDisplayMode="CompactInline">
<SplitView.Pane />
<SplitView.Content />
</SplitView>
51. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
SPLITVIEW.PANEDISPLAYMOD
E
SplitView.IsPaneOpen
"True"
SplitView.IsPaneOpen
"False"
Inline
Overlay
Compact Inline
Compact Overlay
54. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
<SplitView DisplayMode="Inline|Overlay|CompactInline|CompactOverlay">
<SplitView.Pane>
<!-- Navigation Content Here -->
</SplitView.Pane>
<!-- Main Content Here -->
</SplitView>
SPLITVIEW
Panel de navegación adaptativo
59. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
INKCANVAS
• Se puede configurar
para utilizar diferentes
Inputs (Pen, Touch,
Mouse, etc.)
• Se pueden modificar
atributos de dibujo
• Posibilidad de sintetizar
información
InkCanvas
InkPresenter
62. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<SymbolIcon Symbol="{Binding Symbol}"/>
<TextBlock Text="{Binding Name}"/>
<Button Click="Button_ClickHandler"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView>
<ListView.ItemTemplate>
<DataTemplate
x:DataType="local:FreeBookCategory">
<StackPanel>
<SymbolIcon Symbol="{x:Bind
Symbol}"/>
<TextBlock Text="{x:Bind Name}"/>
<Button Click="{x:Bind Click}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
MEJORAS EN RENDIMIENTO
Se resuelve en tiempo de compilación y produce errores!
65. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
USANDO BINDINGS
COMPILADOS• Reemplazamos {Binding …} por {x:Bind …}
• x:Bind esta fuertemente tipado
– El context es la página o control de usuario
• Mode=OneTime es el modo por defecto
67. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
• Duck Typing – mismo nombre de propiedad en diferentes objetos
– Text=“{Binding Age}” funciona con objetos perro y persona
– x:Bind Mitigation: Usa una clase base o interfaz
• Dictionary graphs
– {Binding} puede funcionar con JSON y otros diccionarios de objetos no tipados
– {x:Bind} No funciona sin información de tipado
– Probablemente se podrían hacer suficientes Catings para hacer que funcione, pero la experiencia sería pobre
• Creación de bindings programáticamente
– {x:Bind} no tiene la capacidad de añadir / quitar bindings en runtime
• Use in a style
– {x:Bind} no se puede usar en un estilo para setters etc
– Si podemos usarlo en un DataTemplate definido en el style
¿CUÁNDO USAMOS BINDINGS
“CÁSICOS”?
73. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Windows 10
Sitema Operativo
Bridges
Win32
desktop
Web
hosted
Java
Android
Obj.C
iOS
Universal Windows Platform
WWAC++
& CX
.Net
lenguajes
HTML
DirectX
XAML
C++
.Net
lenguajes
MFCWFWPF
.Net
runtime
74. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
HABLEMOS DE BRIDGES
• Objective-C
– Código iOS que se puede reutilizar en App Windows
• Android
– Código Android reutilizado en App Windows para funcionar en Windows Phone
• Web
– Wrap webs para funcionar en Windows
• Win32
– Classic Windows Apps (CWA) se pueden empaquetar como un Appx
77. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
GRACIAS a TODOS
Por vuestro tiempo!
Javier Suárez
Microsoft MVP Windows Platform Development
• Blog: http://geeks.ms/blogs/jsuarez
• Email: javiersuarezruiz@hotmail.com
• Twitter: @jsuarezruiz
78. COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
CREANDO APPS COMPARTIENDO AL
MÁXIMOEstructura, trucos y otros aspectos de interes con el objetivo de compartir la mayor cantidad de código possible entre
plataformas.
Notas del editor
Here’s an example of an app that used adaptive controls on:
a Phone -- [click to build slide]
a Tablet in portrait -- [click to build slide]
and a PC in landscape
The same elements are present across all three, but the layout has adapted. – [click to build slide]
For example, we can see the command bar across all three screens:
On the phone, space is limited and the command pbar is collapsed to a menu icon on the left to show the commands and a search icon on the right.
On the tablet, there is enough room to show the commands along with a search icon
And on the PC, the coamand bart has enough space to adapt to show all the commands plus a full search box
[next slide]
Adaptive controls are great, but we know there will be cases where the app designer wants to do something more custom or more tailored than the adaptive controls will allow.
This desire might be motivated by hardware differences. For example, an app that will run on an Xbox might want to create some customizations for navigation using a game controller.
Or it might be motivated by screen size and usability. A designer might want to position a menu at the bottom of a phone screen to make it more usable with a single hand.
For these cases, we enable developers to create what we call a tailored user experience. In this case, the code is the same, but the developer creates custom XAML to deliver the desired design on the right device or in the right set of conditions.
Tailored design goes beyond Adaptive UX
Developers can create custom experiences for certain devices
The code is the same, but custom XAML can deliver the experience a developer wants