SlideShare una empresa de Scribd logo
INTRODUCCIÓN A
WINDOWS 10
Un único paquete, interfaces adaptativas,
nuevos controles, novedades en XAML,
herramientas, etc.
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
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
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
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
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
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?
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
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
Hel10 World!
Las Apps NO se destinan a Windows 10,
las Apps se destinan a familias de
dispositivos
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
Las extensions no afectan a los binaries
de otras familias de dispositivos
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>
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
Utilizando extensiones
La historia de las Apps Windows
adaptativas
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
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DISEÑO ADAPTATIVO
Phone (portrait)
Tablet (landscape) / Desktop
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
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
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>
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
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
Visual State Triggers
Vistas por familias de dispositivos
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEVICE FAMILIES
• En Windows 10, podemos distinguir los dispositivos de dos formas:
• Por resolución
• Por familia
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEVICE FAMILIES
• Windows 10 ofrece distintas familias de dispositivos:
• Desktop
• Mobile
• Xbox
• IoT
• …
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.
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.
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
Creando vistas por familias de dispositivo
Nuevos controles XAML
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
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
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>
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" />
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>
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>
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>
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>
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" />
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" />
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
RelativePanel
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
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
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
SPLITVIEW
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
COMPORTAMIENTO
Your Windows App
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Segoe MDL2 Assets
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
SPLITVIEW.PANE
<SplitView>
<SplitView.Pane>
<StackPanel>
<RadioButton />
<RadioButton />
</StackPanel>
</SplitView.Pane>
</SplitView>
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
SPLITVIEW.CONTENT
<SplitView>
<SplitView.Pane />
<SplitView.Content>
<Frame/>
</SplitView.Content>
</SplitView>
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>
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
SPLITVIEW.PANEDISPLAYMOD
E
SplitView.IsPaneOpen
"True"
SplitView.IsPaneOpen
"False"
Inline
Overlay
Compact Inline
Compact Overlay
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
SplitView
Novedades en controles
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
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
SPLITVIEW
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
PIVOT
Mismo comportamiento en teléfono, Tabs en desktop
DEMODEMODEMO
Control Pivot
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ESCRIBIR ES HUMANO
• Immediato
• Expresivo
• Personal
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
DEMODEMODEMO
Ink Canvas
Validando XAML!
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!
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Links: Windows Performance Analyzer, EventSource
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
CONSUMO DE MEMORIA
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
DEMODEMODEMO
X:Bind
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”?
Herramientas
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
VISUAL STUDIO
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
VISUAL STUDIO
DEMODEMODEMO
Visual Tree Inspector
Las tecnologías “tradicionales” de
Microsoft no son la única forma de crear
Apps Windows
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
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
Los Bridges permiten llevar más Apps a la
plataforma Windows
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
¿PREGUNTAS y RESPUESTAS?
Dudas?
P&R
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
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.

Más contenido relacionado

La actualidad más candente

Windows 10: Novedades en XAML
Windows 10: Novedades en XAMLWindows 10: Novedades en XAML
Windows 10: Novedades en XAML
Javier Suárez Ruiz
 
Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps Xamarin
Javier Suárez Ruiz
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform Bridges
Javier Suárez Ruiz
 
Reconnect(); Sevilla - Keynote
Reconnect(); Sevilla - KeynoteReconnect(); Sevilla - Keynote
Reconnect(); Sevilla - Keynote
Javier Suárez Ruiz
 
Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4
Javier Suárez Ruiz
 
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinCodemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Javier Suárez Ruiz
 
Xamarin y Microsoft Azure
Xamarin y Microsoft AzureXamarin y Microsoft Azure
Xamarin y Microsoft Azure
Josué Yeray Julián Ferreiro
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
Javier Suárez Ruiz
 
Desktop App Converter
Desktop App ConverterDesktop App Converter
Desktop App Converter
Javier Suárez Ruiz
 
Windows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces AdaptativasWindows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces AdaptativasJavier Suárez Ruiz
 
Novedades en XAML
Novedades en XAMLNovedades en XAML
Novedades en XAML
Javier Suárez Ruiz
 
Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One
Javier Suárez Ruiz
 
WinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSWinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOS
Javier Suárez Ruiz
 
Servicios Xamarin
Servicios XamarinServicios Xamarin
Servicios Xamarin
Javier Suárez Ruiz
 
Introducción al desarrollo de aplicaciones Xamarin
Introducción al desarrollo de aplicaciones XamarinIntroducción al desarrollo de aplicaciones Xamarin
Introducción al desarrollo de aplicaciones Xamarin
Javier Suárez Ruiz
 
Adaptando Apps Xamarin.Forms a tabletas
Adaptando Apps Xamarin.Forms a tabletasAdaptando Apps Xamarin.Forms a tabletas
Adaptando Apps Xamarin.Forms a tabletas
Javier Suárez Ruiz
 
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureXamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Javier Suárez Ruiz
 
Introducción al desarrollo de Apps en Windows 10
Introducción al desarrollo de Apps en Windows 10Introducción al desarrollo de Apps en Windows 10
Introducción al desarrollo de Apps en Windows 10
Javier Suárez Ruiz
 
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.FormsIntroducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Javier Suárez Ruiz
 

La actualidad más candente (20)

Windows 10: Novedades en XAML
Windows 10: Novedades en XAMLWindows 10: Novedades en XAML
Windows 10: Novedades en XAML
 
Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps Xamarin
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform Bridges
 
Reconnect(); Sevilla - Keynote
Reconnect(); Sevilla - KeynoteReconnect(); Sevilla - Keynote
Reconnect(); Sevilla - Keynote
 
Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4
 
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinCodemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
 
Taller Windows 10 TLP Innova
Taller Windows 10 TLP InnovaTaller Windows 10 TLP Innova
Taller Windows 10 TLP Innova
 
Xamarin y Microsoft Azure
Xamarin y Microsoft AzureXamarin y Microsoft Azure
Xamarin y Microsoft Azure
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 
Desktop App Converter
Desktop App ConverterDesktop App Converter
Desktop App Converter
 
Windows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces AdaptativasWindows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces Adaptativas
 
Novedades en XAML
Novedades en XAMLNovedades en XAML
Novedades en XAML
 
Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One
 
WinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSWinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOS
 
Servicios Xamarin
Servicios XamarinServicios Xamarin
Servicios Xamarin
 
Introducción al desarrollo de aplicaciones Xamarin
Introducción al desarrollo de aplicaciones XamarinIntroducción al desarrollo de aplicaciones Xamarin
Introducción al desarrollo de aplicaciones Xamarin
 
Adaptando Apps Xamarin.Forms a tabletas
Adaptando Apps Xamarin.Forms a tabletasAdaptando Apps Xamarin.Forms a tabletas
Adaptando Apps Xamarin.Forms a tabletas
 
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureXamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
 
Introducción al desarrollo de Apps en Windows 10
Introducción al desarrollo de Apps en Windows 10Introducción al desarrollo de Apps en Windows 10
Introducción al desarrollo de Apps en Windows 10
 
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.FormsIntroducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
 

Destacado

Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Javier Suárez Ruiz
 
Regreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de MicrosoftRegreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de Microsoft
Javier Suárez Ruiz
 
[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges
Javier Suárez Ruiz
 
Microsoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinMicrosoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller Xamarin
Javier Suárez Ruiz
 
Extendiendo Xamarin.Forms
Extendiendo Xamarin.FormsExtendiendo Xamarin.Forms
Extendiendo Xamarin.Forms
Javier Suárez Ruiz
 
Creando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox OneCreando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox One
Javier Suárez Ruiz
 

Destacado (6)

Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
 
Regreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de MicrosoftRegreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de Microsoft
 
[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges
 
Microsoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinMicrosoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller Xamarin
 
Extendiendo Xamarin.Forms
Extendiendo Xamarin.FormsExtendiendo Xamarin.Forms
Extendiendo Xamarin.Forms
 
Creando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox OneCreando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox One
 

Similar a Introducción al desarrollo de Apps en Windows 10

Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
Josué Yeray Julián Ferreiro
 
Windows 10 universal apps
Windows 10 universal appsWindows 10 universal apps
Windows 10 universal apps
Andrés Londoño
 
Plataformas Móviles
Plataformas Móviles Plataformas Móviles
Plataformas Móviles
ruth_1983
 
Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...
Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...
Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...
José Antonio Sandoval Acosta
 
Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
Josué Yeray Julián Ferreiro
 
VMware Horizon View 6.x
VMware Horizon View 6.xVMware Horizon View 6.x
VMware Horizon View 6.x
Alejandro Marin
 
Introducción a los "Pelochos"
Introducción a los "Pelochos"Introducción a los "Pelochos"
Introducción a los "Pelochos"
Javier Suárez Ruiz
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
Javier Suárez Ruiz
 
Windows 10 Dev Readiness - Colombia
Windows 10 Dev Readiness - ColombiaWindows 10 Dev Readiness - Colombia
Windows 10 Dev Readiness - Colombia
Vicente Gerardo Guzman Lucio
 
Introducción a las Apps Universales
Introducción a las Apps UniversalesIntroducción a las Apps Universales
Introducción a las Apps UniversalesJavier Suárez Ruiz
 
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Luis Beltran
 
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
Luis Fernando Aguas Bucheli
 
Desarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCrossDesarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCross
Ivan Rodrigo Toledo Ivanovic
 
Herramientas de desarrollo de android
Herramientas de desarrollo de androidHerramientas de desarrollo de android
Herramientas de desarrollo de android
Jaqueline Luna
 
Perspectivas cap 16
Perspectivas cap 16Perspectivas cap 16
Perspectivas cap 16
Gary Carvajal
 
Desarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGapDesarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGap
betabeers
 
Charla 1er betabeers Córdoba
Charla 1er betabeers CórdobaCharla 1er betabeers Córdoba
Charla 1er betabeers Córdoba
Luis Muñoz Hueso
 
Introduccion android
Introduccion androidIntroduccion android
Introduccion android
Jose Luis Ayerdis Espinoza
 

Similar a Introducción al desarrollo de Apps en Windows 10 (20)

Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
 
Windows 10 universal apps
Windows 10 universal appsWindows 10 universal apps
Windows 10 universal apps
 
Plataformas Móviles
Plataformas Móviles Plataformas Móviles
Plataformas Móviles
 
Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...
Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...
Bases de Datos para Dispositivos Móviles - Unidad I Introducción a la Progra...
 
Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
 
VMware Horizon View 6.x
VMware Horizon View 6.xVMware Horizon View 6.x
VMware Horizon View 6.x
 
Introducción a los "Pelochos"
Introducción a los "Pelochos"Introducción a los "Pelochos"
Introducción a los "Pelochos"
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Windows 10 Dev Readiness - Colombia
Windows 10 Dev Readiness - ColombiaWindows 10 Dev Readiness - Colombia
Windows 10 Dev Readiness - Colombia
 
Introducción a las Apps Universales
Introducción a las Apps UniversalesIntroducción a las Apps Universales
Introducción a las Apps Universales
 
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
 
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
 
Cosas sobre Windows Phone 7.5
Cosas sobre Windows Phone 7.5Cosas sobre Windows Phone 7.5
Cosas sobre Windows Phone 7.5
 
Desarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCrossDesarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCross
 
Herramientas de desarrollo de android
Herramientas de desarrollo de androidHerramientas de desarrollo de android
Herramientas de desarrollo de android
 
Perspectivas cap 16
Perspectivas cap 16Perspectivas cap 16
Perspectivas cap 16
 
Diapositivas
DiapositivasDiapositivas
Diapositivas
 
Desarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGapDesarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGap
 
Charla 1er betabeers Córdoba
Charla 1er betabeers CórdobaCharla 1er betabeers Córdoba
Charla 1er betabeers Córdoba
 
Introduccion android
Introduccion androidIntroduccion android
Introduccion android
 

Más de Javier Suárez Ruiz

Cape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitCape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community Toolkit
Javier Suárez Ruiz
 
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsTech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Javier Suárez Ruiz
 
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Javier Suárez Ruiz
 
Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI Handlers
Javier Suárez Ruiz
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.Forms
Javier Suárez Ruiz
 
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.FormsMonkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
Javier Suárez Ruiz
 
Crear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsCrear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.Forms
Javier Suárez Ruiz
 
#XamarinUIJuly Summary
#XamarinUIJuly Summary#XamarinUIJuly Summary
#XamarinUIJuly Summary
Javier Suárez Ruiz
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
Javier Suárez Ruiz
 
Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018
Javier Suárez Ruiz
 
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms ShellMonkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
Javier Suárez Ruiz
 
.Net Conf Sevilla 2018
.Net Conf Sevilla 2018.Net Conf Sevilla 2018
.Net Conf Sevilla 2018
Javier Suárez Ruiz
 
Analizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.FormsAnalizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.Forms
Javier Suárez Ruiz
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller Xamarin
Javier Suárez Ruiz
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!
Javier Suárez Ruiz
 
Novedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 PreviewNovedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 Preview
Javier Suárez Ruiz
 
Desarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloDesarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrollo
Javier Suárez Ruiz
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
Javier Suárez Ruiz
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
Javier Suárez Ruiz
 
Aumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinAumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas Xamarin
Javier Suárez Ruiz
 

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

Cape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitCape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community Toolkit
 
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsTech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
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: Xamarin Community Toolkit: More possibilities with Xamarin....Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
 
Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI Handlers
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.Forms
 
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.FormsMonkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
 
Crear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsCrear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.Forms
 
#XamarinUIJuly Summary
#XamarinUIJuly Summary#XamarinUIJuly Summary
#XamarinUIJuly Summary
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
 
Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018
 
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms ShellMonkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
 
.Net Conf Sevilla 2018
.Net Conf Sevilla 2018.Net Conf Sevilla 2018
.Net Conf Sevilla 2018
 
Analizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.FormsAnalizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.Forms
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller Xamarin
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!
 
Novedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 PreviewNovedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 Preview
 
Desarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloDesarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrollo
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 
Aumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinAumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas Xamarin
 

Introducción al desarrollo de Apps en Windows 10

  • 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
  • 9. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO Hel10 World!
  • 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>
  • 14. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO Utilizando extensiones
  • 15. La historia de las Apps Windows adaptativas
  • 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
  • 17. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DISEÑO ADAPTATIVO Phone (portrait) Tablet (landscape) / Desktop
  • 18. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DISEÑO ADAPTADO Phone (portrait) Tablet (landscape) / Desktop
  • 19. Los usuarios adoran las Apps que son geniales en cada uno de sus dispositivos
  • 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
  • 23. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO Visual State Triggers
  • 24. Vistas por familias de dispositivos
  • 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.
  • 29. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO Creando vistas por familias de dispositivo
  • 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" />
  • 41. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO RelativePanel
  • 42. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . SIMPLIFICANDO EL ÁRBOL VISUAL<Grid> <StackPanel> <StackPanel> <TextBlock /> <TextBlock /> </StackPanel> <StackPanel> <TextBlock /> <TextBlock /> </StackPanel> </StackPanel> </Grid> <RelativePanel> <TextBlock /> <TextBlock /> <TextBlock /> <TextBlock /> </RelativePanel >
  • 43. El control Relative Panel es una de las claves para tus estrategias a la hora de adaptar la UI
  • 45. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . SPLITVIEW
  • 46. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . COMPORTAMIENTO Your Windows App
  • 47. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Segoe MDL2 Assets
  • 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
  • 52. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO SplitView
  • 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
  • 55. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . SPLITVIEW
  • 56. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . PIVOT Mismo comportamiento en teléfono, Tabs en desktop
  • 58. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . ESCRIBIR ES HUMANO • Immediato • Expresivo • Personal
  • 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!
  • 63. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Links: Windows Performance Analyzer, EventSource
  • 64. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . CONSUMO DE MEMORIA
  • 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”?
  • 69. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . VISUAL STUDIO
  • 70. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . VISUAL STUDIO
  • 72. Las tecnologías “tradicionales” de Microsoft no son la única forma de crear Apps Windows
  • 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
  • 75. Los Bridges permiten llevar más Apps a la plataforma Windows
  • 76. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . ¿PREGUNTAS y RESPUESTAS? Dudas? P&R
  • 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

  1. 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]
  2. 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