SlideShare une entreprise Scribd logo
1  sur  94
Télécharger pour lire hors ligne
Abril 2016 Diplomado Dispositivos Móviles 1
Módulo de Xamarin Forms
Parte 1: Introducción a Xamarin
Abril 2016 Diplomado Dispositivos Móviles 2
Sorey García (@soreygarcia)
Consultora en Movilidad
y Freelancer XAML
Ingenieria Informatica
Politécnico Jaime Isaza Cadavid
Especialista en Desarrollo de Software
Universidad EAFIT
Docente de Cátedra
Institución Universitaria Pascual Bravo
Co-fundadora de la comunidad de
Desarrolladores Avanet y Codies
Instructora
Abril 2016 Diplomado Dispositivos Móviles 3
Abril 2016 Diplomado Dispositivos Móviles 4
Commercial LicenseOpen Source License / Free available
4
From .NET to Xamarin
Windows
.NET Framework
Linux
Mono
iOS
MonoTouch
Android
Mono for Android
iOS
Xamarin.iOS
Android
Xamarin.Android
Abril 2016 Diplomado Dispositivos Móviles 5
Silo
Approach
Crear una App
multiples
veces
Abril 2016 Diplomado Dispositivos Móviles 6
Retos del desarrollo nativo
• Mac OS X
• XCode
• Objective-C
• Swift
• iOS SDK
• Apple Tools
• OS
• Eclipse or Android Studio
or…
• Java
• Android SDK
• SDK Tools
• Windows OS
• Visual Studio
• C#
• .NET Framework
• Windows Phone SDK
Abril 2016 Diplomado Dispositivos Móviles 7
Write Once,
Run Anywhere
Approach
Mínimo común
denominador App Generation
Abril 2016 Diplomado Dispositivos Móviles 8
Retos del desarrollo híbrido
• Mínimo común denominador
• Fragmentación del Browser
• Desarrollo y diseño para 1 plataforma,
afecta las experiencias de usuario
Abril 2016 Diplomado Dispositivos Móviles 9
Abril 2016 Diplomado Dispositivos Móviles 10
Algunas opciones
Abril 2016 Diplomado Dispositivos Móviles 11
Abril 2016 Diplomado Dispositivos Móviles 12
Xamarin
Approach
Comparte
código nativo
Abril 2016 Diplomado Dispositivos Móviles 13
Comparaciones por plataforma
Abril 2016 Diplomado Dispositivos Móviles 14
@implementation MSViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)OnButtonDown:(id)sender {
UIAlertView* view =
[[UIAlertView alloc]init];
[view setTitle:@"Hello World"];
[view setMessage: @"How are you?”];
[view addButtonWithTitle:@"OK"];
[view show];
}
@end
public partial class iOSAppViewController :
UIViewController
{
public iOSAppViewController (IntPtr handle) :
base (handle){
}
public override void ViewDidLoad (){
base.ViewDidLoad ();
}
partial void OnButtonDown (UIButton sender)
{
UIAlertView view = new UIAlertView();
view.Title = "Hello World" ;
view.Message = "How are you? " ;
view.AddButton ("OK");
view.Show();
}
iOS
Abril 2016 Diplomado Dispositivos Móviles 15
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
Button myBtn = (Button) this.findViewById( R.id.clickMe);
myBtn.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new
AlertDialog.Builder(MyActivity.this) ;
builder.setTitle( "Hello World")
.setMessage("How are you?")
.setPositiveButton( "OK", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface
dialogInterface, int i) {
dialogInterface.dismiss();
}}) .show();
}});
}
}
[Activity (Label = "AndroidApp", MainLauncher = true, Icon =
"@drawable/icon")]
public class MainActivity : Activity {
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
Button button = FindViewById<Button> (Resource.Id.me);
button.Click += delegate {
AlertDialog.Builder builder = new AlertDialog.Builder
(this );
AlertDialog dialog = null ;
builder.SetTitle ( "Hello World")
.SetMessage ( "How are you")
.SetPositiveButton( "OK" , delegate {
dialog.Dismiss(); } );
dialog = builder.Show ();
} ;
}
}
Android
Abril 2016 Diplomado Dispositivos Móviles 16
¿Por qué nativo?
Xamarin genera experiencias nativas.
Native User Interfaces Native API Access Native Performance
Abril 2016 Diplomado Dispositivos Móviles 17
Windows APIs
100% coverage
Abril 2016 Diplomado Dispositivos Móviles 18
… or iOS APIs
100% coverage
Abril 2016 Diplomado Dispositivos Móviles 19
… or Android APIs
100% coverage
Abril 2016 Diplomado Dispositivos Móviles 20
Compilación Nativa
Xamarin.iOS does full Ahead Of Time (AOT)
compilation to produce an ARM binary for
Apple’s App Store.
Xamarin.Android takes advantage of Just In
Time (JIT) compilation on the Android
device.
Abril 2016 Diplomado Dispositivos Móviles 21
Cualquier cosa que pueda hacerse en Objective-C or
Java puede hacerse en C# con Xamarin usando Visual
Studio o Xamarin Studio
Abril 2016 Diplomado Dispositivos Móviles 22
Abril 2016 Diplomado Dispositivos Móviles 23
Share Code: Portable Class Libraries
Abril 2016 Diplomado Dispositivos Móviles 24
NuGet
Abril 2016 Diplomado Dispositivos Móviles 25
Shared Projects
Abril 2016 Diplomado Dispositivos Móviles 26
Linked
Files
Compiler
Directives
Abril 2016 Diplomado Dispositivos Móviles 27
Separación de responsabilidades
UserInterface
AppLogic
General Model-View-ViewModel (MVVM)
Abril 2016 Diplomado Dispositivos Móviles 28
Abril 2016 Diplomado Dispositivos Móviles 29
Xamarin + Xamarin Forms
Abril 2016 Diplomado Dispositivos Móviles 30
 40+ Pages, Layouts, and Controls
 Build from code behind or XAML
 Two-way Data Binding
 Navigation
 Animation API
 Dependency Service
 Messaging Center
Xamarin.Forms
Shared UI Code
Abril 2016 Diplomado Dispositivos Móviles 31
Xamarin’s Unique Approach
Shared C# codebase • 100% native API access • High performance
iOS C# UI Windows C# UIAndroid C# UI
Shared C# Mobile C# Server
Linux/Mono
CoreCLRAzure
Shared C# Client/Server
Xamarin.Forms: Interfaces Nativas con Código Compartido
Use a single API to generate native, platform-
specific user interfaces
At runtime, each Xamarin.Forms page and its
controls are mapped to platform-specific native
UI elements
Abril 2016 Diplomado Dispositivos Móviles 33
Pages
Abril 2016 Diplomado Dispositivos Móviles 34
Layouts
Abril 2016 Diplomado Dispositivos Móviles 35
Controls
ActivityIndicator BoxView Button DatePicker Editor
Entry Image Label ListView Map
OpenGLView Picker ProgressBar SearchBar Slider
Stepper TableView TimePicker WebView EntryCell
ImageCell SwitchCell TextCell ViewCell
Abril 2016 Diplomado Dispositivos Móviles 36
Cells
• EntryCell
• SwitchCell
• TextCell
• ImageCell
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/controls/cells/
Abril 2016 Diplomado Dispositivos Móviles 37
Controles de terceros
Abril 2016 Diplomado Dispositivos Móviles 38
http://www.genymotion.com/
Emuladores
Abril 2016 Diplomado Dispositivos Móviles 39
Plataformas Soportadas Xamarin Forms
• Android 4.0.3 o Superior
• iOS 6.1 o Superior
• Windows Phone y Windows 8.1
• Windows 10 UWP
Abril 2016 Diplomado Dispositivos Móviles 40
Microsoft adquirió Xamarin
Abril 2016 Diplomado Dispositivos Móviles 41
Xamarin Test Cloud
Abril 2016 Diplomado Dispositivos Móviles 42
Xamarin Insights
Abril 2016 Diplomado Dispositivos Móviles 43
Ventajas y Desventajas
VENTAJAS
• Se escribe el código solo una vez
• Mantiene la experiencia de usuario propia de cada plataforma.
• Se permite el acceso a funciones nativas a través de Inyección de Dependencias.
• No es necesario conocer todo acerca de las plataformas nativas
• Puedes crear código XAML y aprovechar la potencia de MVVM
DESVENTAJAS
• Es un poco nuevo así que es necesario adaptarse a lo que existe, lo que limita en cuanto a
crear UX que demande demasiado esfuerzo gráfico.
Xamarin.Forms se recomienda para
• Start learning platform specifics – in .NET.
• Prototype
• Data-driven, task-oriented
• multi-platform apps
• Recommended for:
• Lists
• Item selections
• Change properties
• Update backend
NO se recomienda en los siguientes casos
• Complex/customized interfaces -
nuanced experiences
• Android Material Design, iOS
transitions
• Extensive platform-specific capability
• Slow-mo camera, fingerprint
scanner (iOS 6)
• Not Recommended for:
• UI-intensive apps with complex
gestures
Abril 2016 Diplomado Dispositivos Móviles 46
• Mejoras de integración con iOS 9 y Android 6
• Material Design (AppCompat)
• Optimización del rendimiento
• XAML pre compilado
• Windows 10 (UWP) Preview
• Nuevos gestos
• Efectos, templates…
Xamarin.Forms 2.0
Abril 2016 Diplomado Dispositivos Móviles 47
evolve.xamarin.com
Abril 2016 Diplomado Dispositivos Móviles 48
Módulo de Xamarin Forms
Parte 2: Consideraciones de Publicación
Abril 2016 Diplomado Dispositivos Móviles 49
XAML y C# Everywhere
La mayoría de recursos en
internet enseñan Xamarin
Forms con Code Behind.
Sin embargo la
recomendación es
aprender y trabajar con
XAML y aprovechar su
enfoque a la separación de
responsabilidades entre el
diseño y la codificación.
Abril 2016 Diplomado Dispositivos Móviles 50
Centros de Desarrollo
Abril 2016 Diplomado Dispositivos Móviles 51
Apple Developer Center
• Cuenta de Desarrollador o Compañia: 99 USD Anuales
• Cuenta Empresarial: 299 USD Anuales
• En el Apple Developer Center se gestiona la cuenta, certificados y dispositivos
• En iTunes Connect se publican las aplicaciones
• Invitaciones a beta tester via correo desde iTunes Connect subiendo un Bundle a
TestFlight
• Nivel de complejidad: Alto
• Nivel de exigencia en calidad: Alta
• Tiempo de publicación: Días (Entre 7 y 12)
• http://appreviewtimes.com/
Abril 2016 Diplomado Dispositivos Móviles 52
Windows Store y Windows Phone Store
Windows Phone Store y Windows Store
• 19 USD de por vida para desarrolladores
• 99 USD de por vida para compañías
• Invitaciones a beta tester via correo subiendo un paquete.
• En el Developer Benefits Center se obtienen beneficios adicionales con suscripciones
• Nivel de Complejidad: Medio
• Nivel de exigencia en calidad: Baja
• Tiempo de publicación: Horas máximo 1 o 2 días, en revisiones posteriores pueden pedirte
mejorar la aplicación o puede ser removida de la tienda.
Abril 2016 Diplomado Dispositivos Móviles 53
Play Store Developer Center
Google Play Store
• 25 USD de por vida
• En Google Play Store de gestionan y publican las aplicaciones
• Se puede enviar versiones Beta a grupos de usuarios
• Nivel de complejidad: Bajo
• Nivel de exigencia en calidad: Baja
• Tiempo de publicación: Horas
Abril 2016 Diplomado Dispositivos Móviles 54
Herramientas y Modos de Ejecución
Abril 2016 Diplomado Dispositivos Móviles 55
Herramientas
Xamarin Studio en MAC o Visual Studio 2015 Update 2 en Windows
Android
• Android SDK y APIs necesarias según soporte que se dese dar
• Dispositivo, Visual Studio Emulator for Android, GenyMotion o Android Player
Windows Phone y Windows
• Windows SDK
• Dispositivo o Emuladores del SDK
iOS
• Xcode
• Dispositivo, Emuladores de Xcode
• Xamarin instalado en el MAC aunque se use Windows
Abril 2016 Diplomado Dispositivos Móviles 56
Debug y Release
Android
• No requiere de ninguna consideración para ejecutar en ambos modos.
• Para entregar un APK de prueba se necesita generar un KeyStore
• Solo se pueden publicar paquetes en release
Windows Phone y Windows
• No requiere de ninguna consideración para ejecutar en ambos modos.
• Para generar el appx de prueba se necesita firmar los paquetes con Visual
• Las apps Universales de Windows 10 están aún en Preview
• Para probar paquetes en dispositivos, se debe desbloquear el dispositivo para desarrollo
• Solo se pueden publicar paquetes en release
Abril 2016 Diplomado Dispositivos Móviles 57
Debug y Release
iOS
• Requiere cuenta de desarrollador autorizada
• Requiere configurar certificados de desarrollo bajados desde del developer center e
instalados en el KeyChain para Debug o Adhoc / AppStore.
• Se requiere generar el AppId de la aplicación en desarrollo
• Para generar IPA (Paquetes en Adhoc para prueba en dispositivos) se requiere registrar el
equipo en la cuenta de desarrollador y habilitar el dispositivo en el certificado especifico de
desarrollo o distribución
• Solo se pueden publicar paquetes generados en modo AppStore.
Abril 2016 Diplomado Dispositivos Móviles 58
APIs por Plataforma
(Mapas y Notificaciones)
Abril 2016 Diplomado Dispositivos Móviles 59
APIs para Mapas Nativos
Google
• Los mapas requieren configurar el SHA del Key Store en la consola de
desarrolladores y solicitar las llaves para Debug y para Release para Google
Maps Android API v2
• Las notificaciones requieren configurar una llave para Google Cloud
Messaging for Android
• Consola de desarrolladores: https://code.google.com/apis/console/
Abril 2016 Diplomado Dispositivos Móviles 60
APIs para Mapas Nativos
iOS
• Los mapas no requieren nada adicional
• Se requiere habilitar el certificado de Notificaciones Push para el AppId
correspondiente a la app que se esta desarrollando uno para Debug y otro
para Adhoc / AppStore
Windows Phone y Windows
• Los mapas requieren una llave para mapas de Bing >
https://www.bingmapsportal.com/
• Las notificaciones requieren de llaves generadas en los Store para cada una
de las aplicaciones publicadas.
Abril 2016 Diplomado Dispositivos Móviles 61
Azure Service Bus
Debido a la complejidad del envió de notificaciones que tiene cada
plataforma existen servicios como el de Azure Service Bus que centraliza los
envíos de notificaciones.
• iOS: Debe configurarse el certificado generado en la máquina donde se está compilando
para publicar.
• Android: Debe configurarse la llave entregada en la consola de desarrolladores
• Windows Phone: debe configurarse la llave entregada en el Windows Phone Store.
Abril 2016 Diplomado Dispositivos Móviles 62
Base de datos local
Abril 2016 Diplomado Dispositivos Móviles 63
SQLite
• SQLite provee una base de datos local por plataforma.
• Esta base de datos es almacenada en el sistema de archivos.
• SQLite está soportada nativamente por iOS y Android pero no en Windows Phone o
Windows. Debe instalarse Sqlite for Windows y Sqlite for Windows Phone
Abril 2016 Diplomado Dispositivos Móviles 64
SQLite.NET Async (ORM)
Abril 2016 Diplomado Dispositivos Móviles 65
Custom Controls, Renderers y Bindings
Abril 2016 Diplomado Dispositivos Móviles 66
Controles Extendidos y Custom Controls
• El comportamiento de los controles puede ser extendido creando clases
que heredan de los controles base y añadiendo Propiedades de
Dependencia, un concepto usado en el desarrollo con XAML que permite
crear propiedades que pueden ser enlazadas con orígenes de datos
(Bindings XAML).
Abril 2016 Diplomado Dispositivos Móviles 67
Renderers y Custom Renderers
• Los renderers son clases que provee Xamarin, para acceder a los miembros
nativos de los controles de Forms y alterar así la forma como estos
controles se dibujan. Cada control de Forms tiene su renderer excepto los
Layouts.
• Es posible querer renderizar o presentar un control que aún no ha sido
incluido en Xamarin Forms pero que se desea usar.
• Para esto existe un renderer genérico ViewRenderer a través del cual se
pueden realizar las implementaciones de estos controles.
• Para que estos controles tengan datos que provengan de Bindings debe
asociarse este concepto con el visto previamente Controles Extendidos y
Custom Controls.
Abril 2016 Diplomado Dispositivos Móviles 68
Bindings
Xamarin provee de los bindings necesarios para acceder a las APIs base de
cada plataforma desde C#, sin embargo hay empresas de terceros que
proveen controles o funcionalidades que son populares.
La manera de acceder a estas es crear nuestros propios bindings si es que no
existen ya en la tienda de componentes.
Es necesario aprender como se hace esto en cada plataforma en particular.
Android
• http://developer.xamarin.com/guides/android/advanced_topics/java_integ
ration_overview/binding_a_java_library_%28.jar%29/
iOS
• http://developer.xamarin.com/guides/ios/advanced_topics/binding_objecti
ve-c/
Abril 2016 Diplomado Dispositivos Móviles 69
Módulo de Xamarin Forms
Parte 3: Introducción a XAML y MVVM
Abril 2016 Diplomado Dispositivos Móviles 70
Conceptos básicos
Abril 2016 Diplomado Dispositivos Móviles 71
• XAML es un lenguaje declarativo, basado en
XML y pensado para escribir la interface gráfica
de una aplicación de forma textual y ordenada.
• Una característica muy importante de XAML es
que todos los objetos qué definamos en el,
automáticamente son instanciados por el CLR y
creados como objetos accesibles desde código,
sin necesidad de realizar de nuevo la declaración
de los mismos en Code Behind, todo gracias al
mecanismo de las Clases Parciales.
• Su principal objetivo es la separación de
responsabilidades.
¿Qué es XAML?
Abril 2016 Diplomado Dispositivos Móviles 72
• Los conceptos que permiten esta separación de responsabilidades en
XAML son en especial los bindings y los comandos, los cuales nos
permiten respectivamente “enlazar” datos y acciones a nuestras vistas.
• Ambos dependen del otro concepto a manejar que se conoce como el
contexto de datos, para el cual se requiere una adecuada comprensión
de los conceptos de orientación a objetos.
• Los convertidores por su parte nos ayudan a trasformar un dato y
mostrar en la vista el resultado de dicha transformación.
XAML
Abril 2016 Diplomado Dispositivos Móviles 73
• Es un patrón de diseño creado en 2005 y es una evolución de MVC y MVP
usado especialmente para aplicaciones basadas en XAML.
• La traducción de sus iniciales es Modelo Vista – Vista Modelo.
• Su principal propósito y beneficio está en la separación de responsabilidades
a nivel de la presentación de nuestras aplicaciones.
• Las implementaciones de MVVM son diversas y dependen básicamente de
las necesidades que tenga la aplicación o el desarrollo en sí mismo.
• Existen muchos frameworks disponibles para implementar MVVM en
aplicaciones XAML, su elección es personal y opcional. El framework más
más usado es MVVM Light.
¿Qué es MVVM?
Abril 2016 Diplomado Dispositivos Móviles 74
Separación de responsabilidades
UserInterface
AppLogic
General Model-View-ViewModel (MVVM)
Abril 2016 Diplomado Dispositivos Móviles 75
MVVM Simple
Model
View
ViewModel
Data Bindings
One way
One time
Two way
Commands
Interfaz de Usuario
Clases que representan las
fuentes de datos
Estructuras que
representan los contextos
de datos de las pantallas y
el que permiten el acceso a
la logica de negocio
Abril 2016 Diplomado Dispositivos Móviles 76
Vistas
Aplicaciones de escritorio, web forms
Caja de texto
Etiqueta
Form.cs (Code behind C#)
Form.designer.cs (C#)
Clase
Form
Usar code behind en clases parciales,
es el escenario “típico o más sencillo”
de un desarrollador .NET.
Aplicaciones XAML
Caja de texto
Etiqueta
MainPage.xaml
(Lenguaje declarativo XAML)
MainPage.xaml.cs (Code behind C#)
Clase
MainPage
Nuestra meta para hacer
código portable es usar
code hind al mínimo
posible. En la demo de
hecho cero code behind.
Abril 2016 Diplomado Dispositivos Móviles 77
Usando XAML se pueden crear de forma declarativa los
mismos elementos gráficos que se crearían en código
Vistas
<StackLayout>
<TextBox/>
<Button/>
</StackLayout>
StackLayout stackPanel = new StackLayout();
Entry textBox = new Entry();
stackPanel.Children.Add(textBox);
Button button = new Button();
stackPanel.Children.Add(button);
Abril 2016 Diplomado Dispositivos Móviles 78
Ambos escenarios permiten acceder a los controles de la pantalla como
miembros de la clase que los contiene es decir
this.txtMensaje.Text = “Hola”;
Y crear event handlers para poner el código relacionado a una interacción
del usuario, por ejemplo el click de un botón
private void Button_Click(object sender, RoutedEventArgs e)
{ //Code }
Sin embargo como ya lo dijimos, está no es la mejor práctica para hacer
código portable y reusable.
Vistas
Abril 2016 Diplomado Dispositivos Móviles 79
Bindings y Contextos de datos
Los bindings son textos declarativos que
definen a que propiedad o comando del
contexto de datos está asociado un
atributo de un elemento XAML.
Los contextos de datos, no son más que
instancias de clases.
Como fuente de los bindings también
pueden usarse recursos XAML
declarados a nivel de la App o en algún
diccionario de recursos.
Guardar cambios
Nombre
Editar perfil
Apellido
Abril 2016 Diplomado Dispositivos Móviles 80
Entendiendo los bindings de forma simple
12:38
recordar
*****
iniciar sesión
password
soreygarcia
usuario
Text={Binding UserName}
Password={Binding Password}
Command={Binding StartCommand}
BindingContext={Binding Usuario, Source={StaticResource Locator}}
BindingContext > Instancia de una clase, de una Vista Modelo
Abril 2016 Diplomado Dispositivos Móviles 81
XAML sin bindings
<StackLayout x:Name="ContentPanel" Grid.Row="1" >
<Label Text="TextBlock"/>
<Entry Height="72" Text="TextBox"/>
<Label Text="TextBlock"/>
<Entry Height="72" Text="TextBox"/>
<Button Content="Button"/>
</StackLayout>
Esta es la declaración XAML de la vista que se presento en la diapositiva
anterior creada en Windows Phone.
Abril 2016 Diplomado Dispositivos Móviles 82
XAML con bindings
<StackLayout x:Name="ContentPanel" Grid.Row="1">
<Label Text="TextBlock"/>
<Entry Height="72" Text="{Binding Nombre, Mode=TwoWay}"/>
<Label Text="TextBlock"/>
<TextBox Height="72" Text="{Binding Apellido, Mode=TwoWay}"/>
<Button Content="Button"/>
</StackLayout>
Esta es la declaración XAML usando bindings. Lo que hay que entender de esto es que los
bindings de los Textbox indican que esperamos que el DataContext del StackPanel tengan las
propiedades Nombre y Apellido.
Abril 2016 Diplomado Dispositivos Móviles 83
¿De donde van a salir esos datos?
<Grid x:Name="LayoutRoot" Background="Transparent"
BindingContext="{Binding Usuario, Source={StaticResource SampleDataSource}}">
<Grid x:Name="ContentPanel">
<!– Aquí van los demás elementos de nuestra vista -->
</Grid>
</Grid>
Si vemos el contenedor de nuestro StackLayout vemos que tiene asignados dos contextos, uno
en tiempo de diseño y otro en tiempo de ejecución.
El contexto del contenedor interno, espera que el contexto del contenedor más externo tenga
alguna propiedad con el nombre Persona.
Abril 2016 Diplomado Dispositivos Móviles 84
Vistas Modelos
Las Vistas Modelos
son las clases que al
instanciarse van a
servir como
contextos de datos a
nuestras vistas.
Aprender a definir las
Vistas Modelo, es
más importante de lo
que parece.
class ViewModels
ClueViewModel
«property»
+ Name(): string
+ Value(): string
BindableBase
MainViewModel
- jsonService: IJsonService
- navigationService: INavigationService
- phoneService: IPhoneService
- randomGen: Random
- LoadPlayers(): void
+ MainViewModel(INavigationService, IPhoneService)
~ SufflePlayers(): void
«property»
+ Players(): ObservableCollection<PlayerViewModel>
+ SelectedPlayer(): PlayerViewModel
BindableBase
PlayerViewModel
- navigationService: INavigationService
- phoneService: IPhoneService
- wasDiscovered: bool
- Discover(): void
- Guess(): void
+ PlayerViewModel(INavigationService, IPhoneService)
«property»
+ Answer(): string
+ Clues(): ObservableCollection<ClueViewModel>
+ DiscoverCommand(): ICommand
+ GuessCommand(): ICommand
+ Id(): int
+ Name(): string
+ ParentViewModel(): MainViewModel
+ Photo(): string
+ WasDiscovered(): bool
http://blog.soreygarcia.me/2013/12/imaginando-los-prototipos-y-las-vistas.html
Abril 2016 Diplomado Dispositivos Móviles 85
Comandos
Events
Event
HandlersCommanding
Los comandos se enlazan a las vistas a través de bindings y dependen del
contexto de datos pero están enfocados a ejecutar acciones. Su
implementación se hace usando la interfaz ICommand
Abril 2016 Diplomado Dispositivos Móviles 86
Comandos
Esta es la asociación en XAML usando bindings del uso de un comando, como
vemos la vista no tiene idea de cual es la implementación concreta del método,
esta es relativa al contexto que le sea asignado.
<StackLayout x:Name="ContentPanel" Grid.Row="1" >
<Label Text="TextBlock"/>
<Entry Height="72" Text="TextBox"/>
<Label Text="TextBlock"/>
<Entry Height="72" Text="TextBox"/>
<Button Content="Button" Command="{Binding GuardarPerfilCommand}"/>
</StackLayout>
Abril 2016 Diplomado Dispositivos Móviles 87
Servicios
Otra buena práctica es no colocar lógica compleja en las vistas modelo, aunque ellas son las
receptoras de los comandos, una práctica simple (en este nivel intermedio) es usar clases que
llamaremos servicios, para ejecutar la lógica particular de la app o del negocio.
Abril 2016 Diplomado Dispositivos Móviles 88
http://blog.soreygarcia.me/2014/07/xaml-para-principiantes-fordummies.html
Abril 2016 Diplomado Dispositivos Móviles 89
Android iOS
Cross (Xamarin Forms)
PCL (Logic)
Windows
+
C
o
m
p
a
r
t
i
d
o
CalendarService CalendarService CalendarService
Xamarin Forms
NavigationService
MainViewModel
ApiService
DepencyCo
ntaider
ICalendarSer
vice
LocalDataService
DbConnectionService DbConnectionService
IDbConnecti
onService
Abril 2016 Diplomado Dispositivos Móviles 90
Pantallas
(XAML)
ViewModels
(Origen de los
datos)
Servicios
InstancelLocator
(Dependency
Injection)
Resources
Framework
MVVM
(MVVM Light,
MVVM Cross,
*
Infrastructure.Commo
n)
ApiService
LocalDataServic
e
SettingsService
NavigationServi
ce
NetworkService
CrossService
DialogService
Models
Abril 2016 Diplomado Dispositivos Móviles 91
MVVM Light
Pantallas (XAML)
C
o
n
t
r
o
l
e
s
V
i
e
w
M
o
d
e
l
s
Commands
Bindings
Binding
Name
Property Name
Method Login
S
e
r
v
i
c
i
o
s
Data
Login
Binding
ValidationErrors
[KeyName]
Binding
LoginCommand
StaticResource
ThemeColor
Recursos
(Resource Dictionary)
ViewModelLocator
MainViewModel
Patterns & Practices
ServiceLocator
Arquitectura
Con MVVM Light
Autofac (Contenedor de dependencias)
ServiceLocator
ApiService
LocalDataService
DataTemplates
Colores
Fuentes
Abril 2016 Diplomado Dispositivos Móviles 92
Material Recomendado
Foros de Xamarin
BugZilla
VERSION FINAL
https://blogs.msdn.microsoft.com/microsoft_press/2016/03/31/fre
e-ebook-creating-mobile-apps-with-xamarin-forms/
OFFICIAL SITE
https://developer.xamarin.com/
ALGUNOS VIDEOS
https://www.youtube.com/user/soreygarcia
Abril 2016 Diplomado Dispositivos Móviles 93
Free 30 Day Trial - xamarin.com/university
Unrivaled Mobile
Development
Training
Live unlimited mobile development training from
mobile experts, in your time-zone, on your
schedule, and as often as you'd like.
Abril 2016 Diplomado Dispositivos Móviles 94
¿Preguntas?
Sorey García
soreygarcia@gmail.com | @soreygarcia | blog.soreygarcia.me

Contenu connexe

Tendances

Selenium WebDriver with C#
Selenium WebDriver with C#Selenium WebDriver with C#
Selenium WebDriver with C#srivinayak
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Jose R. Hilera
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
 
Programación reactiva con Vert.x
Programación reactiva con Vert.xProgramación reactiva con Vert.x
Programación reactiva con Vert.xFran García
 
introduction to Vue.js 3
introduction to Vue.js 3 introduction to Vue.js 3
introduction to Vue.js 3 ArezooKmn
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 
Unidad 5 Programación de dispositivos moviles
Unidad 5 Programación de dispositivos movilesUnidad 5 Programación de dispositivos moviles
Unidad 5 Programación de dispositivos movileskabis_yadira
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel frameworkAhmad Fatoni
 
MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )Ahmed Emad
 
Historia De La Web
Historia De La WebHistoria De La Web
Historia De La WebAndrés
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EESabri Bouchlema
 
Modelos de Procesos de Software
Modelos de Procesos de SoftwareModelos de Procesos de Software
Modelos de Procesos de SoftwareJiuseppe Flores
 

Tendances (20)

Alice 10
Alice 10Alice 10
Alice 10
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
 
Selenium WebDriver with C#
Selenium WebDriver with C#Selenium WebDriver with C#
Selenium WebDriver with C#
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
Java 3 d manual
Java 3 d manualJava 3 d manual
Java 3 d manual
 
Dvm
DvmDvm
Dvm
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Programación reactiva con Vert.x
Programación reactiva con Vert.xProgramación reactiva con Vert.x
Programación reactiva con Vert.x
 
introduction to Vue.js 3
introduction to Vue.js 3 introduction to Vue.js 3
introduction to Vue.js 3
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Metodologia Diseño Web
Metodologia Diseño WebMetodologia Diseño Web
Metodologia Diseño Web
 
Unidad 5 Programación de dispositivos moviles
Unidad 5 Programación de dispositivos movilesUnidad 5 Programación de dispositivos moviles
Unidad 5 Programación de dispositivos moviles
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel framework
 
MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )
 
Historia De La Web
Historia De La WebHistoria De La Web
Historia De La Web
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Modelos de Procesos de Software
Modelos de Procesos de SoftwareModelos de Procesos de Software
Modelos de Procesos de Software
 
Ingeniería de software modelo incremental
Ingeniería de software  modelo incrementalIngeniería de software  modelo incremental
Ingeniería de software modelo incremental
 
Tomcat
TomcatTomcat
Tomcat
 

En vedette

NetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvilNetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvilSorey García
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...Sorey García
 
SVQDC - Desarrollo de Apps apra Hololens
SVQDC - Desarrollo de Apps apra HololensSVQDC - Desarrollo de Apps apra Hololens
SVQDC - Desarrollo de Apps apra HololensJavier Suárez Ruiz
 
re-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarinre-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades XamarinJavier Suárez Ruiz
 
Extendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersExtendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersJavier Suárez Ruiz
 
Arquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinArquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinJavier Suárez Ruiz
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de softwareGuillermo Lemus
 
Presentación en el Mobile Day
Presentación en el Mobile DayPresentación en el Mobile Day
Presentación en el Mobile Dayenriqueaguilar
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Hendrik Ebbers
 
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 MVVMCrossIvan Rodrigo Toledo Ivanovic
 
Sistemas De Evaluacion De Seguridad
Sistemas De Evaluacion De SeguridadSistemas De Evaluacion De Seguridad
Sistemas De Evaluacion De SeguridadChema Alonso
 
SydMobNet July 2014: Xamarin 3 & Xamarin Forms
SydMobNet July 2014: Xamarin 3 & Xamarin FormsSydMobNet July 2014: Xamarin 3 & Xamarin Forms
SydMobNet July 2014: Xamarin 3 & Xamarin FormsAlec Tucker
 
Xamarin day9 - Advance Xamarin Forms
Xamarin day9 - Advance Xamarin FormsXamarin day9 - Advance Xamarin Forms
Xamarin day9 - Advance Xamarin FormsSubodh Pushpak
 
Modern .NET Apps - Telerik Webinar
Modern .NET Apps - Telerik WebinarModern .NET Apps - Telerik Webinar
Modern .NET Apps - Telerik WebinarSam Basu
 
Auditoria en informática, Organización, Planes y Estructuras.
Auditoria en informática, Organización, Planes y Estructuras.Auditoria en informática, Organización, Planes y Estructuras.
Auditoria en informática, Organización, Planes y Estructuras.Jasmin G.
 

En vedette (20)

NetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvilNetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvil
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
 
Testing de Apps Xamarin
Testing de Apps XamarinTesting de Apps Xamarin
Testing de Apps Xamarin
 
SVQDC - Desarrollo de Apps apra Hololens
SVQDC - Desarrollo de Apps apra HololensSVQDC - Desarrollo de Apps apra Hololens
SVQDC - Desarrollo de Apps apra Hololens
 
re-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarinre-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarin
 
dotNetMálaga - Taller Xamarin
dotNetMálaga - Taller XamarindotNetMálaga - Taller Xamarin
dotNetMálaga - Taller Xamarin
 
Servicios Xamarin
Servicios XamarinServicios Xamarin
Servicios Xamarin
 
Extendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersExtendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom Renders
 
Arquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinArquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones Xamarin
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Presentación en el Mobile Day
Presentación en el Mobile DayPresentación en el Mobile Day
Presentación en el Mobile Day
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
 
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
 
Sistemas De Evaluacion De Seguridad
Sistemas De Evaluacion De SeguridadSistemas De Evaluacion De Seguridad
Sistemas De Evaluacion De Seguridad
 
SydMobNet July 2014: Xamarin 3 & Xamarin Forms
SydMobNet July 2014: Xamarin 3 & Xamarin FormsSydMobNet July 2014: Xamarin 3 & Xamarin Forms
SydMobNet July 2014: Xamarin 3 & Xamarin Forms
 
Xamarin day9 - Advance Xamarin Forms
Xamarin day9 - Advance Xamarin FormsXamarin day9 - Advance Xamarin Forms
Xamarin day9 - Advance Xamarin Forms
 
Modern .NET Apps - Telerik Webinar
Modern .NET Apps - Telerik WebinarModern .NET Apps - Telerik Webinar
Modern .NET Apps - Telerik Webinar
 
Xamarin Forms
Xamarin FormsXamarin Forms
Xamarin Forms
 
Auditoria en informática, Organización, Planes y Estructuras.
Auditoria en informática, Organización, Planes y Estructuras.Auditoria en informática, Organización, Planes y Estructuras.
Auditoria en informática, Organización, Planes y Estructuras.
 
Seguridad informatica infodasa
Seguridad informatica infodasaSeguridad informatica infodasa
Seguridad informatica infodasa
 

Similaire à Introducción a Xamarin Forms con XAML

Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Luis Beltran
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!Javier 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
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesJosué Yeray Julián Ferreiro
 
Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxErickCarlos14
 
6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles 6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles RAUL Velez
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistencoenriqueaguilar
 
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxCOECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxLuis Beltran
 
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...Luis Beltran
 
Visual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaVisual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaJavier 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.FormsJavier Suárez Ruiz
 
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
 
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdfIntroduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdfEliasChoque14
 

Similaire à Introducción a Xamarin Forms con XAML (20)

primera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptxprimera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptx
 
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
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....
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móviles
 
Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptx
 
Reconnect2015
Reconnect2015Reconnect2015
Reconnect2015
 
6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles 6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistenco
 
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxCOECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
 
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Visual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaVisual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event Sevilla
 
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
 
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 (...
 
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdfIntroduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
 
Visual Studio App Center
Visual Studio App CenterVisual Studio App Center
Visual Studio App Center
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 

Plus de Sorey García

Mision inspiración para docentes
Mision inspiración para docentesMision inspiración para docentes
Mision inspiración para docentesSorey García
 
WIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnologíaWIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnologíaSorey García
 
Internet de las Cosas y Netduino
Internet de las Cosas y NetduinoInternet de las Cosas y Netduino
Internet de las Cosas y NetduinoSorey García
 
Misión: Inspiración
Misión: InspiraciónMisión: Inspiración
Misión: InspiraciónSorey García
 
Tendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarialTendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarialSorey García
 
[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura Medellín[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura MedellínSorey García
 
MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences Sorey García
 
GWAB: Azure Mobile Services
GWAB: Azure Mobile ServicesGWAB: Azure Mobile Services
GWAB: Azure Mobile ServicesSorey García
 
Similitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y WindowsSimilitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y WindowsSorey García
 
Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Sorey García
 
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Sorey García
 
Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8Sorey García
 
Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)Sorey García
 
Windows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para DesarrolladoresWindows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para DesarrolladoresSorey García
 
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y JavascriptJSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y JavascriptSorey García
 
Windows Phone 8 en Campus Party
Windows Phone 8 en Campus PartyWindows Phone 8 en Campus Party
Windows Phone 8 en Campus PartySorey García
 
Introducción a XAML y MVVM
Introducción a XAML y MVVMIntroducción a XAML y MVVM
Introducción a XAML y MVVMSorey García
 
Sensibilización en Metodologías Ágiles
Sensibilización en Metodologías ÁgilesSensibilización en Metodologías Ágiles
Sensibilización en Metodologías ÁgilesSorey García
 
Boya.ca - Introducción a Windows Phone
Boya.ca - Introducción a Windows PhoneBoya.ca - Introducción a Windows Phone
Boya.ca - Introducción a Windows PhoneSorey García
 

Plus de Sorey García (20)

Mision inspiración para docentes
Mision inspiración para docentesMision inspiración para docentes
Mision inspiración para docentes
 
WIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnologíaWIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnología
 
Internet de las Cosas y Netduino
Internet de las Cosas y NetduinoInternet de las Cosas y Netduino
Internet de las Cosas y Netduino
 
Misión: Inspiración
Misión: InspiraciónMisión: Inspiración
Misión: Inspiración
 
Codies.Launch()
Codies.Launch()Codies.Launch()
Codies.Launch()
 
Tendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarialTendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarial
 
[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura Medellín[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura Medellín
 
MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences
 
GWAB: Azure Mobile Services
GWAB: Azure Mobile ServicesGWAB: Azure Mobile Services
GWAB: Azure Mobile Services
 
Similitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y WindowsSimilitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y Windows
 
Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)
 
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
 
Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8
 
Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)
 
Windows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para DesarrolladoresWindows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para Desarrolladores
 
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y JavascriptJSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
 
Windows Phone 8 en Campus Party
Windows Phone 8 en Campus PartyWindows Phone 8 en Campus Party
Windows Phone 8 en Campus Party
 
Introducción a XAML y MVVM
Introducción a XAML y MVVMIntroducción a XAML y MVVM
Introducción a XAML y MVVM
 
Sensibilización en Metodologías Ágiles
Sensibilización en Metodologías ÁgilesSensibilización en Metodologías Ágiles
Sensibilización en Metodologías Ágiles
 
Boya.ca - Introducción a Windows Phone
Boya.ca - Introducción a Windows PhoneBoya.ca - Introducción a Windows Phone
Boya.ca - Introducción a Windows Phone
 

Dernier

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
cuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicacuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicaGianninaValeskaContr
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesRaquel Martín Contreras
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 

Dernier (20)

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
cuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicacuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básica
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materiales
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 

Introducción a Xamarin Forms con XAML

  • 1. Abril 2016 Diplomado Dispositivos Móviles 1 Módulo de Xamarin Forms Parte 1: Introducción a Xamarin
  • 2. Abril 2016 Diplomado Dispositivos Móviles 2 Sorey García (@soreygarcia) Consultora en Movilidad y Freelancer XAML Ingenieria Informatica Politécnico Jaime Isaza Cadavid Especialista en Desarrollo de Software Universidad EAFIT Docente de Cátedra Institución Universitaria Pascual Bravo Co-fundadora de la comunidad de Desarrolladores Avanet y Codies Instructora
  • 3. Abril 2016 Diplomado Dispositivos Móviles 3
  • 4. Abril 2016 Diplomado Dispositivos Móviles 4 Commercial LicenseOpen Source License / Free available 4 From .NET to Xamarin Windows .NET Framework Linux Mono iOS MonoTouch Android Mono for Android iOS Xamarin.iOS Android Xamarin.Android
  • 5. Abril 2016 Diplomado Dispositivos Móviles 5 Silo Approach Crear una App multiples veces
  • 6. Abril 2016 Diplomado Dispositivos Móviles 6 Retos del desarrollo nativo • Mac OS X • XCode • Objective-C • Swift • iOS SDK • Apple Tools • OS • Eclipse or Android Studio or… • Java • Android SDK • SDK Tools • Windows OS • Visual Studio • C# • .NET Framework • Windows Phone SDK
  • 7. Abril 2016 Diplomado Dispositivos Móviles 7 Write Once, Run Anywhere Approach Mínimo común denominador App Generation
  • 8. Abril 2016 Diplomado Dispositivos Móviles 8 Retos del desarrollo híbrido • Mínimo común denominador • Fragmentación del Browser • Desarrollo y diseño para 1 plataforma, afecta las experiencias de usuario
  • 9. Abril 2016 Diplomado Dispositivos Móviles 9
  • 10. Abril 2016 Diplomado Dispositivos Móviles 10 Algunas opciones
  • 11. Abril 2016 Diplomado Dispositivos Móviles 11
  • 12. Abril 2016 Diplomado Dispositivos Móviles 12 Xamarin Approach Comparte código nativo
  • 13. Abril 2016 Diplomado Dispositivos Móviles 13 Comparaciones por plataforma
  • 14. Abril 2016 Diplomado Dispositivos Móviles 14 @implementation MSViewController - (void)viewDidLoad { [super viewDidLoad]; } - (IBAction)OnButtonDown:(id)sender { UIAlertView* view = [[UIAlertView alloc]init]; [view setTitle:@"Hello World"]; [view setMessage: @"How are you?”]; [view addButtonWithTitle:@"OK"]; [view show]; } @end public partial class iOSAppViewController : UIViewController { public iOSAppViewController (IntPtr handle) : base (handle){ } public override void ViewDidLoad (){ base.ViewDidLoad (); } partial void OnButtonDown (UIButton sender) { UIAlertView view = new UIAlertView(); view.Title = "Hello World" ; view.Message = "How are you? " ; view.AddButton ("OK"); view.Show(); } iOS
  • 15. Abril 2016 Diplomado Dispositivos Móviles 15 public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { Button myBtn = (Button) this.findViewById( R.id.clickMe); myBtn.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this) ; builder.setTitle( "Hello World") .setMessage("How are you?") .setPositiveButton( "OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); }}) .show(); }}); } } [Activity (Label = "AndroidApp", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); SetContentView (Resource.Layout.Main); Button button = FindViewById<Button> (Resource.Id.me); button.Click += delegate { AlertDialog.Builder builder = new AlertDialog.Builder (this ); AlertDialog dialog = null ; builder.SetTitle ( "Hello World") .SetMessage ( "How are you") .SetPositiveButton( "OK" , delegate { dialog.Dismiss(); } ); dialog = builder.Show (); } ; } } Android
  • 16. Abril 2016 Diplomado Dispositivos Móviles 16 ¿Por qué nativo? Xamarin genera experiencias nativas. Native User Interfaces Native API Access Native Performance
  • 17. Abril 2016 Diplomado Dispositivos Móviles 17 Windows APIs 100% coverage
  • 18. Abril 2016 Diplomado Dispositivos Móviles 18 … or iOS APIs 100% coverage
  • 19. Abril 2016 Diplomado Dispositivos Móviles 19 … or Android APIs 100% coverage
  • 20. Abril 2016 Diplomado Dispositivos Móviles 20 Compilación Nativa Xamarin.iOS does full Ahead Of Time (AOT) compilation to produce an ARM binary for Apple’s App Store. Xamarin.Android takes advantage of Just In Time (JIT) compilation on the Android device.
  • 21. Abril 2016 Diplomado Dispositivos Móviles 21 Cualquier cosa que pueda hacerse en Objective-C or Java puede hacerse en C# con Xamarin usando Visual Studio o Xamarin Studio
  • 22. Abril 2016 Diplomado Dispositivos Móviles 22
  • 23. Abril 2016 Diplomado Dispositivos Móviles 23 Share Code: Portable Class Libraries
  • 24. Abril 2016 Diplomado Dispositivos Móviles 24 NuGet
  • 25. Abril 2016 Diplomado Dispositivos Móviles 25 Shared Projects
  • 26. Abril 2016 Diplomado Dispositivos Móviles 26 Linked Files Compiler Directives
  • 27. Abril 2016 Diplomado Dispositivos Móviles 27 Separación de responsabilidades UserInterface AppLogic General Model-View-ViewModel (MVVM)
  • 28. Abril 2016 Diplomado Dispositivos Móviles 28
  • 29. Abril 2016 Diplomado Dispositivos Móviles 29 Xamarin + Xamarin Forms
  • 30. Abril 2016 Diplomado Dispositivos Móviles 30  40+ Pages, Layouts, and Controls  Build from code behind or XAML  Two-way Data Binding  Navigation  Animation API  Dependency Service  Messaging Center Xamarin.Forms Shared UI Code
  • 31. Abril 2016 Diplomado Dispositivos Móviles 31 Xamarin’s Unique Approach Shared C# codebase • 100% native API access • High performance iOS C# UI Windows C# UIAndroid C# UI Shared C# Mobile C# Server Linux/Mono CoreCLRAzure Shared C# Client/Server
  • 32. Xamarin.Forms: Interfaces Nativas con Código Compartido Use a single API to generate native, platform- specific user interfaces At runtime, each Xamarin.Forms page and its controls are mapped to platform-specific native UI elements
  • 33. Abril 2016 Diplomado Dispositivos Móviles 33 Pages
  • 34. Abril 2016 Diplomado Dispositivos Móviles 34 Layouts
  • 35. Abril 2016 Diplomado Dispositivos Móviles 35 Controls ActivityIndicator BoxView Button DatePicker Editor Entry Image Label ListView Map OpenGLView Picker ProgressBar SearchBar Slider Stepper TableView TimePicker WebView EntryCell ImageCell SwitchCell TextCell ViewCell
  • 36. Abril 2016 Diplomado Dispositivos Móviles 36 Cells • EntryCell • SwitchCell • TextCell • ImageCell http://developer.xamarin.com/guides/cross-platform/xamarin-forms/controls/cells/
  • 37. Abril 2016 Diplomado Dispositivos Móviles 37 Controles de terceros
  • 38. Abril 2016 Diplomado Dispositivos Móviles 38 http://www.genymotion.com/ Emuladores
  • 39. Abril 2016 Diplomado Dispositivos Móviles 39 Plataformas Soportadas Xamarin Forms • Android 4.0.3 o Superior • iOS 6.1 o Superior • Windows Phone y Windows 8.1 • Windows 10 UWP
  • 40. Abril 2016 Diplomado Dispositivos Móviles 40 Microsoft adquirió Xamarin
  • 41. Abril 2016 Diplomado Dispositivos Móviles 41 Xamarin Test Cloud
  • 42. Abril 2016 Diplomado Dispositivos Móviles 42 Xamarin Insights
  • 43. Abril 2016 Diplomado Dispositivos Móviles 43 Ventajas y Desventajas VENTAJAS • Se escribe el código solo una vez • Mantiene la experiencia de usuario propia de cada plataforma. • Se permite el acceso a funciones nativas a través de Inyección de Dependencias. • No es necesario conocer todo acerca de las plataformas nativas • Puedes crear código XAML y aprovechar la potencia de MVVM DESVENTAJAS • Es un poco nuevo así que es necesario adaptarse a lo que existe, lo que limita en cuanto a crear UX que demande demasiado esfuerzo gráfico.
  • 44. Xamarin.Forms se recomienda para • Start learning platform specifics – in .NET. • Prototype • Data-driven, task-oriented • multi-platform apps • Recommended for: • Lists • Item selections • Change properties • Update backend
  • 45. NO se recomienda en los siguientes casos • Complex/customized interfaces - nuanced experiences • Android Material Design, iOS transitions • Extensive platform-specific capability • Slow-mo camera, fingerprint scanner (iOS 6) • Not Recommended for: • UI-intensive apps with complex gestures
  • 46. Abril 2016 Diplomado Dispositivos Móviles 46 • Mejoras de integración con iOS 9 y Android 6 • Material Design (AppCompat) • Optimización del rendimiento • XAML pre compilado • Windows 10 (UWP) Preview • Nuevos gestos • Efectos, templates… Xamarin.Forms 2.0
  • 47. Abril 2016 Diplomado Dispositivos Móviles 47 evolve.xamarin.com
  • 48. Abril 2016 Diplomado Dispositivos Móviles 48 Módulo de Xamarin Forms Parte 2: Consideraciones de Publicación
  • 49. Abril 2016 Diplomado Dispositivos Móviles 49 XAML y C# Everywhere La mayoría de recursos en internet enseñan Xamarin Forms con Code Behind. Sin embargo la recomendación es aprender y trabajar con XAML y aprovechar su enfoque a la separación de responsabilidades entre el diseño y la codificación.
  • 50. Abril 2016 Diplomado Dispositivos Móviles 50 Centros de Desarrollo
  • 51. Abril 2016 Diplomado Dispositivos Móviles 51 Apple Developer Center • Cuenta de Desarrollador o Compañia: 99 USD Anuales • Cuenta Empresarial: 299 USD Anuales • En el Apple Developer Center se gestiona la cuenta, certificados y dispositivos • En iTunes Connect se publican las aplicaciones • Invitaciones a beta tester via correo desde iTunes Connect subiendo un Bundle a TestFlight • Nivel de complejidad: Alto • Nivel de exigencia en calidad: Alta • Tiempo de publicación: Días (Entre 7 y 12) • http://appreviewtimes.com/
  • 52. Abril 2016 Diplomado Dispositivos Móviles 52 Windows Store y Windows Phone Store Windows Phone Store y Windows Store • 19 USD de por vida para desarrolladores • 99 USD de por vida para compañías • Invitaciones a beta tester via correo subiendo un paquete. • En el Developer Benefits Center se obtienen beneficios adicionales con suscripciones • Nivel de Complejidad: Medio • Nivel de exigencia en calidad: Baja • Tiempo de publicación: Horas máximo 1 o 2 días, en revisiones posteriores pueden pedirte mejorar la aplicación o puede ser removida de la tienda.
  • 53. Abril 2016 Diplomado Dispositivos Móviles 53 Play Store Developer Center Google Play Store • 25 USD de por vida • En Google Play Store de gestionan y publican las aplicaciones • Se puede enviar versiones Beta a grupos de usuarios • Nivel de complejidad: Bajo • Nivel de exigencia en calidad: Baja • Tiempo de publicación: Horas
  • 54. Abril 2016 Diplomado Dispositivos Móviles 54 Herramientas y Modos de Ejecución
  • 55. Abril 2016 Diplomado Dispositivos Móviles 55 Herramientas Xamarin Studio en MAC o Visual Studio 2015 Update 2 en Windows Android • Android SDK y APIs necesarias según soporte que se dese dar • Dispositivo, Visual Studio Emulator for Android, GenyMotion o Android Player Windows Phone y Windows • Windows SDK • Dispositivo o Emuladores del SDK iOS • Xcode • Dispositivo, Emuladores de Xcode • Xamarin instalado en el MAC aunque se use Windows
  • 56. Abril 2016 Diplomado Dispositivos Móviles 56 Debug y Release Android • No requiere de ninguna consideración para ejecutar en ambos modos. • Para entregar un APK de prueba se necesita generar un KeyStore • Solo se pueden publicar paquetes en release Windows Phone y Windows • No requiere de ninguna consideración para ejecutar en ambos modos. • Para generar el appx de prueba se necesita firmar los paquetes con Visual • Las apps Universales de Windows 10 están aún en Preview • Para probar paquetes en dispositivos, se debe desbloquear el dispositivo para desarrollo • Solo se pueden publicar paquetes en release
  • 57. Abril 2016 Diplomado Dispositivos Móviles 57 Debug y Release iOS • Requiere cuenta de desarrollador autorizada • Requiere configurar certificados de desarrollo bajados desde del developer center e instalados en el KeyChain para Debug o Adhoc / AppStore. • Se requiere generar el AppId de la aplicación en desarrollo • Para generar IPA (Paquetes en Adhoc para prueba en dispositivos) se requiere registrar el equipo en la cuenta de desarrollador y habilitar el dispositivo en el certificado especifico de desarrollo o distribución • Solo se pueden publicar paquetes generados en modo AppStore.
  • 58. Abril 2016 Diplomado Dispositivos Móviles 58 APIs por Plataforma (Mapas y Notificaciones)
  • 59. Abril 2016 Diplomado Dispositivos Móviles 59 APIs para Mapas Nativos Google • Los mapas requieren configurar el SHA del Key Store en la consola de desarrolladores y solicitar las llaves para Debug y para Release para Google Maps Android API v2 • Las notificaciones requieren configurar una llave para Google Cloud Messaging for Android • Consola de desarrolladores: https://code.google.com/apis/console/
  • 60. Abril 2016 Diplomado Dispositivos Móviles 60 APIs para Mapas Nativos iOS • Los mapas no requieren nada adicional • Se requiere habilitar el certificado de Notificaciones Push para el AppId correspondiente a la app que se esta desarrollando uno para Debug y otro para Adhoc / AppStore Windows Phone y Windows • Los mapas requieren una llave para mapas de Bing > https://www.bingmapsportal.com/ • Las notificaciones requieren de llaves generadas en los Store para cada una de las aplicaciones publicadas.
  • 61. Abril 2016 Diplomado Dispositivos Móviles 61 Azure Service Bus Debido a la complejidad del envió de notificaciones que tiene cada plataforma existen servicios como el de Azure Service Bus que centraliza los envíos de notificaciones. • iOS: Debe configurarse el certificado generado en la máquina donde se está compilando para publicar. • Android: Debe configurarse la llave entregada en la consola de desarrolladores • Windows Phone: debe configurarse la llave entregada en el Windows Phone Store.
  • 62. Abril 2016 Diplomado Dispositivos Móviles 62 Base de datos local
  • 63. Abril 2016 Diplomado Dispositivos Móviles 63 SQLite • SQLite provee una base de datos local por plataforma. • Esta base de datos es almacenada en el sistema de archivos. • SQLite está soportada nativamente por iOS y Android pero no en Windows Phone o Windows. Debe instalarse Sqlite for Windows y Sqlite for Windows Phone
  • 64. Abril 2016 Diplomado Dispositivos Móviles 64 SQLite.NET Async (ORM)
  • 65. Abril 2016 Diplomado Dispositivos Móviles 65 Custom Controls, Renderers y Bindings
  • 66. Abril 2016 Diplomado Dispositivos Móviles 66 Controles Extendidos y Custom Controls • El comportamiento de los controles puede ser extendido creando clases que heredan de los controles base y añadiendo Propiedades de Dependencia, un concepto usado en el desarrollo con XAML que permite crear propiedades que pueden ser enlazadas con orígenes de datos (Bindings XAML).
  • 67. Abril 2016 Diplomado Dispositivos Móviles 67 Renderers y Custom Renderers • Los renderers son clases que provee Xamarin, para acceder a los miembros nativos de los controles de Forms y alterar así la forma como estos controles se dibujan. Cada control de Forms tiene su renderer excepto los Layouts. • Es posible querer renderizar o presentar un control que aún no ha sido incluido en Xamarin Forms pero que se desea usar. • Para esto existe un renderer genérico ViewRenderer a través del cual se pueden realizar las implementaciones de estos controles. • Para que estos controles tengan datos que provengan de Bindings debe asociarse este concepto con el visto previamente Controles Extendidos y Custom Controls.
  • 68. Abril 2016 Diplomado Dispositivos Móviles 68 Bindings Xamarin provee de los bindings necesarios para acceder a las APIs base de cada plataforma desde C#, sin embargo hay empresas de terceros que proveen controles o funcionalidades que son populares. La manera de acceder a estas es crear nuestros propios bindings si es que no existen ya en la tienda de componentes. Es necesario aprender como se hace esto en cada plataforma en particular. Android • http://developer.xamarin.com/guides/android/advanced_topics/java_integ ration_overview/binding_a_java_library_%28.jar%29/ iOS • http://developer.xamarin.com/guides/ios/advanced_topics/binding_objecti ve-c/
  • 69. Abril 2016 Diplomado Dispositivos Móviles 69 Módulo de Xamarin Forms Parte 3: Introducción a XAML y MVVM
  • 70. Abril 2016 Diplomado Dispositivos Móviles 70 Conceptos básicos
  • 71. Abril 2016 Diplomado Dispositivos Móviles 71 • XAML es un lenguaje declarativo, basado en XML y pensado para escribir la interface gráfica de una aplicación de forma textual y ordenada. • Una característica muy importante de XAML es que todos los objetos qué definamos en el, automáticamente son instanciados por el CLR y creados como objetos accesibles desde código, sin necesidad de realizar de nuevo la declaración de los mismos en Code Behind, todo gracias al mecanismo de las Clases Parciales. • Su principal objetivo es la separación de responsabilidades. ¿Qué es XAML?
  • 72. Abril 2016 Diplomado Dispositivos Móviles 72 • Los conceptos que permiten esta separación de responsabilidades en XAML son en especial los bindings y los comandos, los cuales nos permiten respectivamente “enlazar” datos y acciones a nuestras vistas. • Ambos dependen del otro concepto a manejar que se conoce como el contexto de datos, para el cual se requiere una adecuada comprensión de los conceptos de orientación a objetos. • Los convertidores por su parte nos ayudan a trasformar un dato y mostrar en la vista el resultado de dicha transformación. XAML
  • 73. Abril 2016 Diplomado Dispositivos Móviles 73 • Es un patrón de diseño creado en 2005 y es una evolución de MVC y MVP usado especialmente para aplicaciones basadas en XAML. • La traducción de sus iniciales es Modelo Vista – Vista Modelo. • Su principal propósito y beneficio está en la separación de responsabilidades a nivel de la presentación de nuestras aplicaciones. • Las implementaciones de MVVM son diversas y dependen básicamente de las necesidades que tenga la aplicación o el desarrollo en sí mismo. • Existen muchos frameworks disponibles para implementar MVVM en aplicaciones XAML, su elección es personal y opcional. El framework más más usado es MVVM Light. ¿Qué es MVVM?
  • 74. Abril 2016 Diplomado Dispositivos Móviles 74 Separación de responsabilidades UserInterface AppLogic General Model-View-ViewModel (MVVM)
  • 75. Abril 2016 Diplomado Dispositivos Móviles 75 MVVM Simple Model View ViewModel Data Bindings One way One time Two way Commands Interfaz de Usuario Clases que representan las fuentes de datos Estructuras que representan los contextos de datos de las pantallas y el que permiten el acceso a la logica de negocio
  • 76. Abril 2016 Diplomado Dispositivos Móviles 76 Vistas Aplicaciones de escritorio, web forms Caja de texto Etiqueta Form.cs (Code behind C#) Form.designer.cs (C#) Clase Form Usar code behind en clases parciales, es el escenario “típico o más sencillo” de un desarrollador .NET. Aplicaciones XAML Caja de texto Etiqueta MainPage.xaml (Lenguaje declarativo XAML) MainPage.xaml.cs (Code behind C#) Clase MainPage Nuestra meta para hacer código portable es usar code hind al mínimo posible. En la demo de hecho cero code behind.
  • 77. Abril 2016 Diplomado Dispositivos Móviles 77 Usando XAML se pueden crear de forma declarativa los mismos elementos gráficos que se crearían en código Vistas <StackLayout> <TextBox/> <Button/> </StackLayout> StackLayout stackPanel = new StackLayout(); Entry textBox = new Entry(); stackPanel.Children.Add(textBox); Button button = new Button(); stackPanel.Children.Add(button);
  • 78. Abril 2016 Diplomado Dispositivos Móviles 78 Ambos escenarios permiten acceder a los controles de la pantalla como miembros de la clase que los contiene es decir this.txtMensaje.Text = “Hola”; Y crear event handlers para poner el código relacionado a una interacción del usuario, por ejemplo el click de un botón private void Button_Click(object sender, RoutedEventArgs e) { //Code } Sin embargo como ya lo dijimos, está no es la mejor práctica para hacer código portable y reusable. Vistas
  • 79. Abril 2016 Diplomado Dispositivos Móviles 79 Bindings y Contextos de datos Los bindings son textos declarativos que definen a que propiedad o comando del contexto de datos está asociado un atributo de un elemento XAML. Los contextos de datos, no son más que instancias de clases. Como fuente de los bindings también pueden usarse recursos XAML declarados a nivel de la App o en algún diccionario de recursos. Guardar cambios Nombre Editar perfil Apellido
  • 80. Abril 2016 Diplomado Dispositivos Móviles 80 Entendiendo los bindings de forma simple 12:38 recordar ***** iniciar sesión password soreygarcia usuario Text={Binding UserName} Password={Binding Password} Command={Binding StartCommand} BindingContext={Binding Usuario, Source={StaticResource Locator}} BindingContext > Instancia de una clase, de una Vista Modelo
  • 81. Abril 2016 Diplomado Dispositivos Móviles 81 XAML sin bindings <StackLayout x:Name="ContentPanel" Grid.Row="1" > <Label Text="TextBlock"/> <Entry Height="72" Text="TextBox"/> <Label Text="TextBlock"/> <Entry Height="72" Text="TextBox"/> <Button Content="Button"/> </StackLayout> Esta es la declaración XAML de la vista que se presento en la diapositiva anterior creada en Windows Phone.
  • 82. Abril 2016 Diplomado Dispositivos Móviles 82 XAML con bindings <StackLayout x:Name="ContentPanel" Grid.Row="1"> <Label Text="TextBlock"/> <Entry Height="72" Text="{Binding Nombre, Mode=TwoWay}"/> <Label Text="TextBlock"/> <TextBox Height="72" Text="{Binding Apellido, Mode=TwoWay}"/> <Button Content="Button"/> </StackLayout> Esta es la declaración XAML usando bindings. Lo que hay que entender de esto es que los bindings de los Textbox indican que esperamos que el DataContext del StackPanel tengan las propiedades Nombre y Apellido.
  • 83. Abril 2016 Diplomado Dispositivos Móviles 83 ¿De donde van a salir esos datos? <Grid x:Name="LayoutRoot" Background="Transparent" BindingContext="{Binding Usuario, Source={StaticResource SampleDataSource}}"> <Grid x:Name="ContentPanel"> <!– Aquí van los demás elementos de nuestra vista --> </Grid> </Grid> Si vemos el contenedor de nuestro StackLayout vemos que tiene asignados dos contextos, uno en tiempo de diseño y otro en tiempo de ejecución. El contexto del contenedor interno, espera que el contexto del contenedor más externo tenga alguna propiedad con el nombre Persona.
  • 84. Abril 2016 Diplomado Dispositivos Móviles 84 Vistas Modelos Las Vistas Modelos son las clases que al instanciarse van a servir como contextos de datos a nuestras vistas. Aprender a definir las Vistas Modelo, es más importante de lo que parece. class ViewModels ClueViewModel «property» + Name(): string + Value(): string BindableBase MainViewModel - jsonService: IJsonService - navigationService: INavigationService - phoneService: IPhoneService - randomGen: Random - LoadPlayers(): void + MainViewModel(INavigationService, IPhoneService) ~ SufflePlayers(): void «property» + Players(): ObservableCollection<PlayerViewModel> + SelectedPlayer(): PlayerViewModel BindableBase PlayerViewModel - navigationService: INavigationService - phoneService: IPhoneService - wasDiscovered: bool - Discover(): void - Guess(): void + PlayerViewModel(INavigationService, IPhoneService) «property» + Answer(): string + Clues(): ObservableCollection<ClueViewModel> + DiscoverCommand(): ICommand + GuessCommand(): ICommand + Id(): int + Name(): string + ParentViewModel(): MainViewModel + Photo(): string + WasDiscovered(): bool http://blog.soreygarcia.me/2013/12/imaginando-los-prototipos-y-las-vistas.html
  • 85. Abril 2016 Diplomado Dispositivos Móviles 85 Comandos Events Event HandlersCommanding Los comandos se enlazan a las vistas a través de bindings y dependen del contexto de datos pero están enfocados a ejecutar acciones. Su implementación se hace usando la interfaz ICommand
  • 86. Abril 2016 Diplomado Dispositivos Móviles 86 Comandos Esta es la asociación en XAML usando bindings del uso de un comando, como vemos la vista no tiene idea de cual es la implementación concreta del método, esta es relativa al contexto que le sea asignado. <StackLayout x:Name="ContentPanel" Grid.Row="1" > <Label Text="TextBlock"/> <Entry Height="72" Text="TextBox"/> <Label Text="TextBlock"/> <Entry Height="72" Text="TextBox"/> <Button Content="Button" Command="{Binding GuardarPerfilCommand}"/> </StackLayout>
  • 87. Abril 2016 Diplomado Dispositivos Móviles 87 Servicios Otra buena práctica es no colocar lógica compleja en las vistas modelo, aunque ellas son las receptoras de los comandos, una práctica simple (en este nivel intermedio) es usar clases que llamaremos servicios, para ejecutar la lógica particular de la app o del negocio.
  • 88. Abril 2016 Diplomado Dispositivos Móviles 88 http://blog.soreygarcia.me/2014/07/xaml-para-principiantes-fordummies.html
  • 89. Abril 2016 Diplomado Dispositivos Móviles 89 Android iOS Cross (Xamarin Forms) PCL (Logic) Windows + C o m p a r t i d o CalendarService CalendarService CalendarService Xamarin Forms NavigationService MainViewModel ApiService DepencyCo ntaider ICalendarSer vice LocalDataService DbConnectionService DbConnectionService IDbConnecti onService
  • 90. Abril 2016 Diplomado Dispositivos Móviles 90 Pantallas (XAML) ViewModels (Origen de los datos) Servicios InstancelLocator (Dependency Injection) Resources Framework MVVM (MVVM Light, MVVM Cross, * Infrastructure.Commo n) ApiService LocalDataServic e SettingsService NavigationServi ce NetworkService CrossService DialogService Models
  • 91. Abril 2016 Diplomado Dispositivos Móviles 91 MVVM Light Pantallas (XAML) C o n t r o l e s V i e w M o d e l s Commands Bindings Binding Name Property Name Method Login S e r v i c i o s Data Login Binding ValidationErrors [KeyName] Binding LoginCommand StaticResource ThemeColor Recursos (Resource Dictionary) ViewModelLocator MainViewModel Patterns & Practices ServiceLocator Arquitectura Con MVVM Light Autofac (Contenedor de dependencias) ServiceLocator ApiService LocalDataService DataTemplates Colores Fuentes
  • 92. Abril 2016 Diplomado Dispositivos Móviles 92 Material Recomendado Foros de Xamarin BugZilla VERSION FINAL https://blogs.msdn.microsoft.com/microsoft_press/2016/03/31/fre e-ebook-creating-mobile-apps-with-xamarin-forms/ OFFICIAL SITE https://developer.xamarin.com/ ALGUNOS VIDEOS https://www.youtube.com/user/soreygarcia
  • 93. Abril 2016 Diplomado Dispositivos Móviles 93 Free 30 Day Trial - xamarin.com/university Unrivaled Mobile Development Training Live unlimited mobile development training from mobile experts, in your time-zone, on your schedule, and as often as you'd like.
  • 94. Abril 2016 Diplomado Dispositivos Móviles 94 ¿Preguntas? Sorey García soreygarcia@gmail.com | @soreygarcia | blog.soreygarcia.me