SlideShare una empresa de Scribd logo
ONE SDK TO RULE
THEM ALL
Un único paquete, interfaces adaptativas,
nuevos controles, novedades en XAML,
herramientas, etc.
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
Javier Suárez
Mobile Team Lead Bravent
Microsoft MVP Windows Platform
Development
• Blog: http://geeks.ms/blogs/jsuarez
• Email: javiersuarezruiz@hotmail.com
• Twitter: @jsuarezruiz
EL GRAN
VIAJE…
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
MI
TESORO…
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
Phone Small Tablet
2-in-1s
(Tablet or Laptop)
Desktops
& All-in-OnesPhablet Large Tablet
Classic
Laptop
Xbox IoTSurface Hub HoloLens
Windows 10
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
One Store +
One Dev Center
Reuse Existing
Code
One SDK +
Tooling
Adaptive
User Interface
Natural
User Inputs
One Universal Windows Platform
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
ES SIMILAR A LO CONOCIDO?
• ¿Existe un archivo de manifiesto?
• ¿Existe un Proyecto principal?
• ¿Existe un Proyecto Shared?
• ¿Tenemos directivsa #IF de
• compilación?
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DEMO
Hel10 World!
Las Apps NO se destinan a Windows 10,
las Apps se destinan a familias de
dispositivos
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
Las extensions no afectan a los binaries
de otras familias de dispositivos
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DEMO
Utilizando extensiones
La historia de las Apps Windows
adaptativas
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DISEÑO ADAPTATIVO
Phone (portrait)
Tablet (landscape) / Desktop
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DISEÑO ADAPTADO
Phone (portrait)
Tablet (landscape) / Desktop
Los usuarios adoran las Apps que son
geniales en cada uno de sus dispositivos
Mejoras en Visual States
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
TIPOS DE TRIGGER
• MinWindowWidth
• MinWindowHeight
– “Cualquier cosa por encima de este valor”
– Los valores se especifican en píxeles
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DEMO
Visual State Triggers
Vistas por familias de dispositivos
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DEVICE FAMILIES
• En Windows 10, podemos distinguir los dispositivos de dos formas:
• Por resolución
• Por familia
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DEVICE FAMILIES
• Windows 10 ofrece distintas familias de dispositivos:
• Desktop
• Mobile
• Xbox
• IoT
• …
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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.
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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.
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DEMO
Creando vistas por familias de dispositivo
Y CON MI
HACHA!
Nuevos controles XAML
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
RELATIVE PANEL
• Adaptativo
– Relativo al Panel
– Relativo a controles “hermanos”
• Simplifica nuestro XAML
– Simplifica el árbol visual
– Simplifica los estados visuales
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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" />
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
OPCIONES DE POSICIONAMIENTO ENTRE “HERMANOS”
<Rectangle Height="100" Width="100" Fill="Red"
RelativePanel.Above="BlueRect"
RelativePanel.RightOf="BlueRect"
RelativePanel.Below="BlueRect"
RelativePanel.RightOf="BlueRect" />
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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" />
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DEMO
RelativePanel
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
SIMPLIFICANDO EL ÁRBOL
VISUAL<Grid>
<StackPanel>
<StackPanel>
<TextBlock />
<TextBlock />
</StackPanel>
<StackPanel>
<TextBlock />
<TextBlock />
</StackPanel>
</StackPanel>
</Grid>
<RelativePanel>
<TextBlock />
<TextBlock />
<TextBlock />
<TextBlock />
</RelativePanel >
El control Relative Panel es una de las
claves para tus estrategias a la hora de
adaptar la UI
El control SplitView
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
SPLITVIEW
ONE HAMBURGUER
TO RULE THEM ALL!
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
COMPORTAMIENTO
Your Windows App
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
Segoe MDL2 Assets
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
SPLITVIEW.PANE
<SplitView>
<SplitView.Pane>
<StackPanel>
<RadioButton />
<RadioButton />
</StackPanel>
</SplitView.Pane>
</SplitView>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
SPLITVIEW.CONTENT
<SplitView>
<SplitView.Pane />
<SplitView.Content>
<Frame/>
</SplitView.Content>
</SplitView>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
PROPIEDADES DEL SPLIVIEW
<SplitView
IsPaneOpen="False"
CompactPaneLength="150"
OpenPaneLength="50"
Placement="Right|Left"
PaneDisplayMode="CompactInline">
<SplitView.Pane />
<SplitView.Content />
</SplitView>
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
SPLITVIEW.PANEDISPLAYMOD
E
SplitView.IsPaneOpen
"True"
SplitView.IsPaneOpen
"False"
Inline
Overlay
Compact Inline
Compact Overlay
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
DEMO
SplitView
Novedades en controles
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
<SplitView DisplayMode="Inline|Overlay|CompactInline|CompactOverlay">
<SplitView.Pane>
<!-- Navigation Content Here -->
</SplitView.Pane>
<!-- Main Content Here -->
</SplitView>
SPLITVIEW
Panel de navegación adaptativo
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
SPLITVIEW
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
PIVOT
Mismo comportamiento en teléfono, Tabs en desktop
DEMODEMODEMO
Control Pivot
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
ESCRIBIR ES HUMANO
• Immediato
• Expresivo
• Personal
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
DEMODEMODEMO
Ink Canvas
Validando XAML!
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
<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!
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
Links: Windows Performance Analyzer, EventSource
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
CONSUMO DE MEMORIA
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
DEMODEMODEMO
X:Bind
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
• 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”?
Herramientas
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
VISUAL STUDIO
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
VISUAL STUDIO
DEMODEMODEMO
Visual Tree Inspector
BRIDGES
Las tecnologías “tradicionales” de
Microsoft no son la única forma de crear
Apps Windows
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
Los Bridges permiten llevar más Apps a la
plataforma Windows
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
¿PREGUNTAS y RESPUESTAS?
Dudas?
P&R
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
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
ONE SDK TO RULE THEM ALL
TLPINNOVA
.
.
ONE SDK TO RULE THEM ALL
Un único paquete, interfaces adaptativas, nuevos controles, novedades en XAML, herramientas, etc.

Más contenido relacionado

PPTX
Interfaces Adaptativas en Windows 10
PPTX
Introducción al desarrollo de Apps en Windows 10
PPTX
Windows 10: Hel10 World! - Novedades XAML
PPTX
Taller Windows 10 TLP Innova
PPTX
Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad...
PPTX
Reconnect(); Sevilla - Universal Windows Platform
PPTX
Windows 10: Novedades en XAML
PPTX
Novedades en XAML
Interfaces Adaptativas en Windows 10
Introducción al desarrollo de Apps en Windows 10
Windows 10: Hel10 World! - Novedades XAML
Taller Windows 10 TLP Innova
Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad...
Reconnect(); Sevilla - Universal Windows Platform
Windows 10: Novedades en XAML
Novedades en XAML

La actualidad más candente (20)

PPTX
Novedades de Xamarin 4
PPTX
Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
PPTX
Windows 10 Developer Readiness. Interfaces Adaptativas
PPTX
Reconnect(); Sevilla - Keynote
PPTX
Novedades en Visual Studio Online
PPTX
Tus aplicaciones en pantalla grande con Xbox One
PPTX
Introducción a Xamarin
PPTX
Reconnect(); Sevilla - Introducción a Xamarin 4
PPTX
Integración Continua con Apps Xamarin
PPTX
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
PPTX
Universal Windows Platform Bridges
PPTX
WinObjC: Windows Bridge para iOS
PPTX
Extendiendo Xamarin.Forms
PPTX
Desktop App Converter
PPTX
Servicios Xamarin
PPTX
Introducción a Xamarin utilizando MVVMCross
PPTX
Xamarin REvolve 2016
PPTX
Herramientas para el desarrollo de Apps Universales
PPTX
Xamarin y Microsoft Azure
PPTX
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
Novedades de Xamarin 4
Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
Windows 10 Developer Readiness. Interfaces Adaptativas
Reconnect(); Sevilla - Keynote
Novedades en Visual Studio Online
Tus aplicaciones en pantalla grande con Xbox One
Introducción a Xamarin
Reconnect(); Sevilla - Introducción a Xamarin 4
Integración Continua con Apps Xamarin
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Universal Windows Platform Bridges
WinObjC: Windows Bridge para iOS
Extendiendo Xamarin.Forms
Desktop App Converter
Servicios Xamarin
Introducción a Xamarin utilizando MVVMCross
Xamarin REvolve 2016
Herramientas para el desarrollo de Apps Universales
Xamarin y Microsoft Azure
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
Publicidad

Similar a Windows 10: One SDK to rule them all (20)

PPTX
Introducción a Windows 10
PPTX
Introducción al desarrollo de Apps en Windows 10
PDF
Windows 10 universal apps
PPTX
Introducción a Windows 10
PPTX
Windows 10 Dev Readiness - Colombia
DOCX
Herramientas de desarrollo de android
PDF
02 5 o8a-10231485-2-7t
PPTX
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
PPTX
Vuelven los "Pelochos"
PPTX
Introducción a las Apps Universales
PPT
Vbnetclass
KEY
Introduccion android
PPT
Desarrollo De Aplicacion De Silverlight De Principio A Fin
PPTX
Introducción a los "Pelochos"
PPTX
Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...
PDF
VMware Horizon View 6.x
PPTX
Introducción a las Aplicaciones Universales
PPTX
DotNetDom: El futuro de Xamarin
PPTX
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
PPTX
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Introducción a Windows 10
Introducción al desarrollo de Apps en Windows 10
Windows 10 universal apps
Introducción a Windows 10
Windows 10 Dev Readiness - Colombia
Herramientas de desarrollo de android
02 5 o8a-10231485-2-7t
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
Vuelven los "Pelochos"
Introducción a las Apps Universales
Vbnetclass
Introduccion android
Desarrollo De Aplicacion De Silverlight De Principio A Fin
Introducción a los "Pelochos"
Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...
VMware Horizon View 6.x
Introducción a las Aplicaciones Universales
DotNetDom: El futuro de Xamarin
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Publicidad

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

PPTX
Cape Town MS Developer User Group: Xamarin Community Toolkit
PPTX
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
PPTX
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
PPTX
Monkey Conf 2020: .NET MAUI Handlers
PPTX
Creando controles para Xamarin.Forms
PPTX
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
PPTX
Crear interfaces de usuario atractivas con Xamarin.Forms
PPTX
#XamarinUIJuly Summary
PPTX
DotNet 2019: Optimizando Apps con Xamarin.Forms
PPTX
Taller Xamarin Monkey Conf 2018
PPTX
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
PPTX
.Net Conf Sevilla 2018
PPTX
Analizando interfaces de usuario avanzadas con Xamarin.Forms
PPTX
OpenSouthCode 2018: Taller Xamarin
PPTX
DotNet2018: Xamarin.Forms Everywhere!
PPTX
Novedades Xamarin 3.0 Preview
PPTX
Desarrollo Xamarin, más allá del desarrollo
PPTX
Introducción a Xamarin.Forms
PPTX
Introducción a Xamarin
PPTX
Aumento de productividad, herramientas Xamarin
Cape Town MS Developer User Group: Xamarin Community Toolkit
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: .NET MAUI Handlers
Creando controles para Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.Forms
#XamarinUIJuly Summary
DotNet 2019: Optimizando Apps con Xamarin.Forms
Taller Xamarin Monkey Conf 2018
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
.Net Conf Sevilla 2018
Analizando interfaces de usuario avanzadas con Xamarin.Forms
OpenSouthCode 2018: Taller Xamarin
DotNet2018: Xamarin.Forms Everywhere!
Novedades Xamarin 3.0 Preview
Desarrollo Xamarin, más allá del desarrollo
Introducción a Xamarin.Forms
Introducción a Xamarin
Aumento de productividad, herramientas Xamarin

Último (20)

DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
PDF
diagrama de pareto.pdf valerie giraldo diaz
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
Presentación de Redes de Datos modelo osi
PDF
Maste clas de estructura metálica y arquitectura
PDF
taller de informática - LEY DE OHM
PDF
La electricidad y la electrónica .pdf n
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Trabajo colaborativo Grupo #2.docxmkkkkkkl
diagrama de pareto.pdf valerie giraldo diaz
Influencia-del-uso-de-redes-sociales.pdf
REDES INFORMATICAS REDES INFORMATICAS.pptx
Estrategia de apoyo tecnología grado 9-3
Calidad desde el Docente y la mejora continua .pdf
Presentación PASANTIAS AuditorioOO..pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
historia_web de la creacion de un navegador_presentacion.pptx
Presentación de Redes de Datos modelo osi
Maste clas de estructura metálica y arquitectura
taller de informática - LEY DE OHM
La electricidad y la electrónica .pdf n
introduccion a las_web en el 2025_mejoras.ppt
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Temas y subtemas de las fichas 1 y 2.pdf
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.

Windows 10: One SDK to rule them all

  • 1. ONE SDK TO RULE THEM ALL Un único paquete, interfaces adaptativas, nuevos controles, novedades en XAML, herramientas, etc.
  • 2. ONE SDK TO RULE THEM ALL TLPINNOVA . . Javier Suárez Mobile Team Lead Bravent Microsoft MVP Windows Platform Development • Blog: http://geeks.ms/blogs/jsuarez • Email: javiersuarezruiz@hotmail.com • Twitter: @jsuarezruiz
  • 4. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 6. ONE SDK TO RULE THEM ALL TLPINNOVA . . Phone Small Tablet 2-in-1s (Tablet or Laptop) Desktops & All-in-OnesPhablet Large Tablet Classic Laptop Xbox IoTSurface Hub HoloLens Windows 10
  • 7. ONE SDK TO RULE THEM ALL TLPINNOVA . . One Store + One Dev Center Reuse Existing Code One SDK + Tooling Adaptive User Interface Natural User Inputs One Universal Windows Platform
  • 8. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 9. ONE SDK TO RULE THEM ALL TLPINNOVA . . ES SIMILAR A LO CONOCIDO? • ¿Existe un archivo de manifiesto? • ¿Existe un Proyecto principal? • ¿Existe un Proyecto Shared? • ¿Tenemos directivsa #IF de • compilación?
  • 10. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 11. ONE SDK TO RULE THEM ALL TLPINNOVA . . DEMO Hel10 World!
  • 12. Las Apps NO se destinan a Windows 10, las Apps se destinan a familias de dispositivos
  • 13. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 14. Las extensions no afectan a los binaries de otras familias de dispositivos
  • 15. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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. ONE SDK TO RULE THEM ALL TLPINNOVA . . DEMO Utilizando extensiones
  • 17. La historia de las Apps Windows adaptativas
  • 18. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 19. ONE SDK TO RULE THEM ALL TLPINNOVA . . DISEÑO ADAPTATIVO Phone (portrait) Tablet (landscape) / Desktop
  • 20. ONE SDK TO RULE THEM ALL TLPINNOVA . . DISEÑO ADAPTADO Phone (portrait) Tablet (landscape) / Desktop
  • 21. Los usuarios adoran las Apps que son geniales en cada uno de sus dispositivos
  • 23. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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>
  • 24. ONE SDK TO RULE THEM ALL TLPINNOVA . . TIPOS DE TRIGGER • MinWindowWidth • MinWindowHeight – “Cualquier cosa por encima de este valor” – Los valores se especifican en píxeles
  • 25. ONE SDK TO RULE THEM ALL TLPINNOVA . . DEMO Visual State Triggers
  • 26. Vistas por familias de dispositivos
  • 27. ONE SDK TO RULE THEM ALL TLPINNOVA . . DEVICE FAMILIES • En Windows 10, podemos distinguir los dispositivos de dos formas: • Por resolución • Por familia
  • 28. ONE SDK TO RULE THEM ALL TLPINNOVA . . DEVICE FAMILIES • Windows 10 ofrece distintas familias de dispositivos: • Desktop • Mobile • Xbox • IoT • …
  • 29. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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.
  • 30. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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. ONE SDK TO RULE THEM ALL TLPINNOVA . . DEMO Creando vistas por familias de dispositivo
  • 34. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 35. ONE SDK TO RULE THEM ALL TLPINNOVA . . RELATIVE PANEL • Adaptativo – Relativo al Panel – Relativo a controles “hermanos” • Simplifica nuestro XAML – Simplifica el árbol visual – Simplifica los estados visuales
  • 36. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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>
  • 37. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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" />
  • 38. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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>
  • 39. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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>
  • 40. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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>
  • 41. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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>
  • 42. ONE SDK TO RULE THEM ALL TLPINNOVA . . OPCIONES DE POSICIONAMIENTO ENTRE “HERMANOS” <Rectangle Height="100" Width="100" Fill="Red" RelativePanel.Above="BlueRect" RelativePanel.RightOf="BlueRect" RelativePanel.Below="BlueRect" RelativePanel.RightOf="BlueRect" />
  • 43. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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" />
  • 44. ONE SDK TO RULE THEM ALL TLPINNOVA . . DEMO RelativePanel
  • 45. ONE SDK TO RULE THEM ALL TLPINNOVA . . SIMPLIFICANDO EL ÁRBOL VISUAL<Grid> <StackPanel> <StackPanel> <TextBlock /> <TextBlock /> </StackPanel> <StackPanel> <TextBlock /> <TextBlock /> </StackPanel> </StackPanel> </Grid> <RelativePanel> <TextBlock /> <TextBlock /> <TextBlock /> <TextBlock /> </RelativePanel >
  • 46. El control Relative Panel es una de las claves para tus estrategias a la hora de adaptar la UI
  • 48. ONE SDK TO RULE THEM ALL TLPINNOVA . . SPLITVIEW
  • 50. ONE SDK TO RULE THEM ALL TLPINNOVA . . COMPORTAMIENTO Your Windows App
  • 51. ONE SDK TO RULE THEM ALL TLPINNOVA . . Segoe MDL2 Assets
  • 52. ONE SDK TO RULE THEM ALL TLPINNOVA . . SPLITVIEW.PANE <SplitView> <SplitView.Pane> <StackPanel> <RadioButton /> <RadioButton /> </StackPanel> </SplitView.Pane> </SplitView>
  • 53. ONE SDK TO RULE THEM ALL TLPINNOVA . . SPLITVIEW.CONTENT <SplitView> <SplitView.Pane /> <SplitView.Content> <Frame/> </SplitView.Content> </SplitView>
  • 54. ONE SDK TO RULE THEM ALL TLPINNOVA . . PROPIEDADES DEL SPLIVIEW <SplitView IsPaneOpen="False" CompactPaneLength="150" OpenPaneLength="50" Placement="Right|Left" PaneDisplayMode="CompactInline"> <SplitView.Pane /> <SplitView.Content /> </SplitView>
  • 55. ONE SDK TO RULE THEM ALL TLPINNOVA . . SPLITVIEW.PANEDISPLAYMOD E SplitView.IsPaneOpen "True" SplitView.IsPaneOpen "False" Inline Overlay Compact Inline Compact Overlay
  • 56. ONE SDK TO RULE THEM ALL TLPINNOVA . . DEMO SplitView
  • 58. ONE SDK TO RULE THEM ALL TLPINNOVA . . <SplitView DisplayMode="Inline|Overlay|CompactInline|CompactOverlay"> <SplitView.Pane> <!-- Navigation Content Here --> </SplitView.Pane> <!-- Main Content Here --> </SplitView> SPLITVIEW Panel de navegación adaptativo
  • 59. ONE SDK TO RULE THEM ALL TLPINNOVA . . SPLITVIEW
  • 60. ONE SDK TO RULE THEM ALL TLPINNOVA . . PIVOT Mismo comportamiento en teléfono, Tabs en desktop
  • 62. ONE SDK TO RULE THEM ALL TLPINNOVA . . ESCRIBIR ES HUMANO • Immediato • Expresivo • Personal
  • 63. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 66. ONE SDK TO RULE THEM ALL TLPINNOVA . . <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!
  • 67. ONE SDK TO RULE THEM ALL TLPINNOVA . . Links: Windows Performance Analyzer, EventSource
  • 68. ONE SDK TO RULE THEM ALL TLPINNOVA . . CONSUMO DE MEMORIA
  • 69. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 71. ONE SDK TO RULE THEM ALL TLPINNOVA . . • 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. ONE SDK TO RULE THEM ALL TLPINNOVA . . VISUAL STUDIO
  • 74. ONE SDK TO RULE THEM ALL TLPINNOVA . . VISUAL STUDIO
  • 77. Las tecnologías “tradicionales” de Microsoft no son la única forma de crear Apps Windows
  • 78. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 79. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 80. Los Bridges permiten llevar más Apps a la plataforma Windows
  • 81. ONE SDK TO RULE THEM ALL TLPINNOVA . . ¿PREGUNTAS y RESPUESTAS? Dudas? P&R
  • 82. ONE SDK TO RULE THEM ALL TLPINNOVA . . 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
  • 83. ONE SDK TO RULE THEM ALL TLPINNOVA . . ONE SDK TO RULE THEM ALL Un único paquete, interfaces adaptativas, nuevos controles, novedades en XAML, herramientas, etc.

Notas del editor

  • #20: 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]
  • #21: 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