desarrollando apps multiplataforma con xamarin y mvvmcross
Embed Size (px)
TRANSCRIPT

Desarrollando apps multiplataforma con XamarinLa evolución hacia
MVVMCross
Ivan Rodrigo Toledo IvanovicCTO de BirdieWindows Development MVP@itoledo – [email protected]

Nativo es mejor! Cierto que si…?
Android Windows Phone
BlackBerry
iPhone
Windows 8

• Rendimiento• UX/UI• Diferenciación de plataformas• Patrones de diseño• Experiencia
Introducción: apps nativas versus híbridas

• Apps se desarrollan en .NET• Linq, WCF, …
• Acceso nativo a las APIs de cada plataforma• No es una herramienta de abstracción
• UI nativas (Layouts en Android, Storyboards en iOS)
• Reutilización de código .NET existente• Librerías, paquetes NuGet, Componentes
• Integrado con Visual Studio
La respuesta es Xamarin

Demo: Xamarin.Android
Crear una calculadora que suma dos números
-Crea proyecto Android
-Crear 2 EditText, un TextView y un botón en layout principal
-Modificar el delegado del evento Click para que sume

Demo: Xamarin.iOS
La misma calculadora pero en iOS!
- Crear proyecto Universal SingleViewApp
- Añadir las 2 cajas de texto y el TextView
- Añadir delegado del evento TouchDown para que sume

Compartiendo código: PCL
• Portable Class Libraries entregan un subconjunto común de funcionalidad de .NET, disponible para todas las plataformas• No tiene acceso a recursos del dispositivo• Apto para lógica, algoritmos, abstracciones de acceso a datos
• Demo: creando una PCL y compartiendo código entre iOS y Android

TextView, Label, TextBlock… Bindings?
-Mecánica de leer los textos y convertirlos a números desde la UI está condenada a errores-Este problema fue solucionado por Microsoft: ViewModels y Bindings-Demo: Calculadora en Windows Phone

Pero no hay Bindings en Android ni iOS!
La solución es MvvmCross!
-Framework de desarrollo móvil basado en MVVM
-Plataformas iOS, Android, Windows Phone, Windows, Mac
-Lógica de pantallas se implementa en ViewModels
-Interfaces y Servicios abstraen la implementación
-Comandos enlazan acciones de la UI con los métodos del ViewModel
-Bindings en todas partes!

Demo: Reimplementando en MvvmCross
• Crear Proyectos Calculadora.Core, Calculadora.Touch y Calculadora.Droid
• Instalar paquete NuGet mvvmcross
• Modificar ViewModel y añadir N1, N2, Resultado, SumarCommand
• Modificar vista para añadir Bindings

Hay mucho más por descubrir!
- Las series de videos de MvvmCross N+1- Colección de plugins que implementan acceso
nativo a características de los dispositivos- Ubicación (GPS)- Cámara- Fragmentos (Android)- etc.