dotNetMálaga - Taller Xamarin

57

Transcript of dotNetMálaga - Taller Xamarin

Page 1: dotNetMálaga - Taller Xamarin
Page 2: dotNetMálaga - Taller Xamarin

TallerXAMARIN

Page 3: dotNetMálaga - Taller Xamarin

¿Qué vamos a ver?Introducción al taller

Repaso a Xamarin

Creación proyecto• Estructura proyecto• MVVM• Primeras pruebas enlace a datos

La interfaz compartida• Páginas, Layouts y controles en Xamarin.Forms• Recursos y estilos• Creando la interfaz básica de nuestra App

Creación de servicios• Conceptos básicos relacionados con servicios• Creación de servicios (navegación y REST)• Usando plugins

Navegación• Conceptos básicos de navegación• Completar la App

Page 4: dotNetMálaga - Taller Xamarin

Introducción al taller

Page 5: dotNetMálaga - Taller Xamarin

• Crearemos una aplicación meteorológica con información real. Veremos conceptos como:

• Crear estructura Proyecto.• Aplicar MVVM.• Diseño de vistas.• Navegación.• Uso de plugins.

• La aplicación se realizará paso a paso, en diferentes bloques a lo largo de 2,5h.

• A lo largo del taller, contaremos con diferentes responsables que se encargarán tanto de hacer la aplicación paso a paso como de resolver dudas.

• También tendremos alguna sorpresa y detalle ;)

El taller

Page 6: dotNetMálaga - Taller Xamarin
Page 7: dotNetMálaga - Taller Xamarin

No dudéis en preguntar!

Page 8: dotNetMálaga - Taller Xamarin

Introducción a Xamarin

Page 9: dotNetMálaga - Taller Xamarin

Xamarin – Solución completa para el Desarrollo móvil

Develop Testear Build Distribuir Monitorear

Page 10: dotNetMálaga - Taller Xamarin

Código nativo

iOS WindowsAndroid

Objective-CXcode

C#Visual Studio

JavaAndroid Studio

No se comparte código • Diferentes lenguajes & entornos de desarrollo • Diferentes equipos

Page 11: dotNetMálaga - Taller Xamarin

Escribe una vez, corre en todos

App Generator

LuaJavascript

ActionscriptHTML+CSS

Acceso limitado a APIs • Menos rendimiento • Experiencia de usuario más pobre

Page 12: dotNetMálaga - Taller Xamarin

El enfoque de Xamarin

Código común compartido • Acceso 100% a APIs nativas • Alto rendimiento

iOS C# UI

Windows C# UIAndroid C# UI

Shared C# Mobile

Page 13: dotNetMálaga - Taller Xamarin

Xamarin + Xamarin.Forms

Enfoque tradicional Con Xamarin.Forms:Más código compartido, nativo

iOS C# UI

Windows C# UIAndroid C# UI

Shared C# Backend

Shared UI Code

Shared C# Backend

Page 14: dotNetMálaga - Taller Xamarin

El enfoque de Xamarin

Código común compartido • Acceso 100% a APIs nativas • Alto rendimiento

iOS C# UI

Windows C# UIAndroid C# UI

Shared C# Mobile

C# Server

Linux/MonoCoreCLR

Azure

Shared C# Client/Server

Page 15: dotNetMálaga - Taller Xamarin

Xamarin ahora gratis e incluido en Visual

Studio

Page 16: dotNetMálaga - Taller Xamarin

#TechSum

Rendimiento nativo

Xamarin.iOS usa la compilación Ahead Of Time (AOT) para crear un binario ARM para la Apple’s App Store.

Xamarin.Android toma ventaja de la compilación Just In Time (JIT) en dispositivos Android.

Page 17: dotNetMálaga - Taller Xamarin

Open Source – open.xamarin.com

Page 18: dotNetMálaga - Taller Xamarin

Open Source• Xamarin.iOS• Xamarin.Mac• Xamarin.Android• Xamarin.Forms• Bindings & Plugins

• Cómo arrancar• Guías de contribución

Page 19: dotNetMálaga - Taller Xamarin

C# mola

Y lo sabes!

Page 20: dotNetMálaga - Taller Xamarin

C# mola

LINQ

XML

Gestión de eventos y delegados

Page 21: dotNetMálaga - Taller Xamarin

Async/Await

Código más simple, mantenimiento

Page 22: dotNetMálaga - Taller Xamarin

Android ItemClick, ¿ves diferencias?C# con XamarinJava

C# & Async con Xamarin

Page 23: dotNetMálaga - Taller Xamarin

DEMO: Crear proyectoConociendo las plantillas y contenido básico

Page 24: dotNetMálaga - Taller Xamarin

¿Cómo funciona es Xamarin?

Page 25: dotNetMálaga - Taller Xamarin

Windows APIs

Microsoft.Phone Microsoft.Networking Windows.Storage Windows.Foundation Microsoft.Devices

System.Data System.Windows System.Numerics System.Core System.ServiceModel

System.Net System System.IO System.Linq System.Xml

Page 26: dotNetMálaga - Taller Xamarin

iOS – Acceso al 100% de las APIs

MapKit UIKit iBeacon CoreGraphics CoreMotion

System.Data System.Windows System.Numerics System.Core System.ServiceModel

System.Net System System.IO System.Linq System.Xml

Page 27: dotNetMálaga - Taller Xamarin

Android – Acceso al 100%de las APIs

Text-to-speech ActionBar Printing Framework Renderscript NFC

System.Data System.Windows System.Numerics System.Core System.ServiceModel

System.Net System System.IO System.Linq System.Xml

Page 28: dotNetMálaga - Taller Xamarin

Cualquier cosa que puedas hacer con Objective-C, Swift, o Java

se puede hacer con C# y Visual Studio con Xamarin.

Page 29: dotNetMálaga - Taller Xamarin

La clave, compartir código

Page 30: dotNetMálaga - Taller Xamarin

1 libreríaMúltiples PlatformasIncluidas:Xamarin.iOS y Xamarin.Android

Portable Class Libraries

Page 31: dotNetMálaga - Taller Xamarin

Estadísticas de código compartido

Mac

iOS

Android

Windows Phone

iCircuit Touch Draw

86%

14%

72%

28%

70%

30%

61%

39%

88%

12%

76%

24%

90%

10%

Page 32: dotNetMálaga - Taller Xamarin

Introducción a Xamarin.Forms

Page 33: dotNetMálaga - Taller Xamarin

• Crear UIs nativas para iOS, Android, y Windows

• Desde un mismo archivo común, compartido C#.

Conoce Xamarin.Forms

Page 34: dotNetMálaga - Taller Xamarin

Xamarin + Xamarin.Forms

Enfoque tradicional de Xamarin Con Xamarin.Forms:Más código compartido, todo

nativo

iOS C# UI

Windows C# UIAndroid C# UI

Shared C# Backend

Shared UI Code

Shared C# Backend

Page 35: dotNetMálaga - Taller Xamarin

¿Qué se incluye?

✓ 40+ páginas, layouts, y controles (code behind o XAML)

✓ Two-way data binding ✓ Mavegación ✓ API de animaciones ✓ Dependency Service ✓ Messaging Center

Shared C# Backend

Shared UI Code

Page 36: dotNetMálaga - Taller Xamarin

Layouts

Páginas

Stack Absolute Relative Grid ContentView ScrollView Frame

Content MasterDetail Navigation Tabbed Carousel

Page 37: dotNetMálaga - Taller Xamarin

ActivityIndicator BoxView Button DatePicker Editor

Entry Image Label ListView Map

OpenGLView Picker ProgressBar SearchBar Slider

Stepper TableView TimePicker WebView EntryCell

ImageCell SwitchCell TextCell ViewCell

Controles

Page 38: dotNetMálaga - Taller Xamarin

El ecosistema Xamarin.Forms

Page 39: dotNetMálaga - Taller Xamarin

Windows Xamarin.FormsStackPanel StackLayoutTextBox EntryListBox ListViewCheckBox SwitchProgressBar ActivityIndicatorGrid GridLabel LabelButton ButtonImage ImageDate/TimePicker Date/TimePicker

Comparativa de controles

Page 40: dotNetMálaga - Taller Xamarin

Windows Xamarin.Forms

DataContext BindingContext

{Binding Property} {Binding Property}

ItemsSource ItemsSource

ItemTemplate ItemTemplate

DataTemplate DataTemplate

Comparativa de enlace a datos

Page 41: dotNetMálaga - Taller Xamarin

Personalización de la plataforma

Page 42: dotNetMálaga - Taller Xamarin

• <?xml version="1.0" encoding="UTF-8"?>

• <TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"

• xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

• x:Class="MyApp.MainPage">

• <TabbedPage.Children>

• <ContentPage Title="Profile" Icon="Profile.png">

• <StackLayout Spacing="20" Padding="20"

• VerticalOptions="Center">

• <Entry Placeholder="Username"

• Text="{Binding Username}"/>

• <Entry Placeholder="Password"

• Text="{Binding Password}"

• IsPassword="true"/>

• <Button Text="Login" TextColor="White"

• BackgroundColor="#77D065"

• Command="{Binding LoginCommand}"/>

• </StackLayout>

• </ContentPage>

• <ContentPage Title="Settings" Icon="Settings.png">

• <!-- Settings -->

• </ContentPage>

• </TabbedPage.Children>

• </TabbedPage>

UI Nativa desde código compartido

Page 43: dotNetMálaga - Taller Xamarin

DEMO: Vistas básicasXAML Love!

Page 44: dotNetMálaga - Taller Xamarin

El patron MVVM

Page 45: dotNetMálaga - Taller Xamarin

IDE

Lenguaje

Vistas

iOS Android Windows Phone

Xcode Android Studio

Visual Studio

ObjectiveC o Swift

Java C#

Storyboard AXML XAMLMVC MVC MVVMPatrón diseño

Comparativa de plataformas móviles

Page 46: dotNetMálaga - Taller Xamarin

IDE

LenguajeVistas

iOS Android Windows Phone

Visual Studio Visual Studio Visual Studio

C# C# C#

Storyboard AXML XAMLMVVM MVVM MVVMPatrón diseño

Comparativa de plataformas móviles

Page 47: dotNetMálaga - Taller Xamarin

View

ViewM

odel

Model

get/set PropiedadesComandos

Notifica cambios

C#

Models

View View

ViewM

odelView

Model

ModelM

odel

Cross Platform

MVVM

Page 48: dotNetMálaga - Taller Xamarin

• Mayor facilidad para mantener, extender y compartir el código.

• Más facilidad a la hora de colaborar.• Testing.• Más fácil de diseñar.

Pero... ¿Por qué MVVM?

Page 49: dotNetMálaga - Taller Xamarin

DEMO: MVVMEnlace a datos y otros conceptos básicos

Page 50: dotNetMálaga - Taller Xamarin

Plugins

Page 51: dotNetMálaga - Taller Xamarin

Shared C# Backend

Page 52: dotNetMálaga - Taller Xamarin

Código específico de plataforma¿Qué ocurre si necesitamos accede a características específicas de la plataforma?

UI+APIs UI + APIsUI + APIs

BateríaGPSLámparaNotificationesSettingsText To Speech

BateríaGPSLámparaNotificationesSettingsText To Speech

BateríaGPSLámparaNotificationesSettingsText To Speech

Page 53: dotNetMálaga - Taller Xamarin

TextToSpeech

Speak(“Hello World”);

AVSpeechSynthesizer SpeechSynthesizer

Page 54: dotNetMálaga - Taller Xamarin

PluginsXamarin

Common API

github.com/xamarin/plugins

Page 55: dotNetMálaga - Taller Xamarin

DEMO: PluginsPosición GPS

Page 56: dotNetMálaga - Taller Xamarin

Gracias a todos!Hasta la próxima!

Page 57: dotNetMálaga - Taller Xamarin