SlideShare una empresa de Scribd logo
1 de 22
www.sgcampus.com.mx	 @sgcampus
www.sgcampus.com.mx	
@sgcampus
Alder Lopez
Xamarin: Una introducción al desarrollo de
aplicaciones móviles para Android & iOS
www.sgcampus.com.mx	 @sgcampus
Xamarin: Objetivo
Consideraciones:
•  Es deseable tener conocimientos .NET, C#.
•  Para desarrollar para iOS se requiere Mac como
estación para desarrollo o como servidor de
compilación con Xcode.
•  Debe ser miembro del Apple Developer Program.
Objetivo General:
Al finalizar será capaz de desarrollar una aplicación
móvil para Android & iOS utilizando .NET.
www.sgcampus.com.mx	 @sgcampus
Xamarin: Herramientas
Ambiente de desarrollo:
Tenemos dos opciones para instalar el ambiente de
desarrollo, el primero es descargar el instalador de
X a m a r i n d e s d e l a p a g i n a
https://www.xamarin.com/; la segunda es
descargar Visual Studio Community 2015 (apartir
de que Micrsoft compro Xamarin en Marzo 2016).
En el caso de Mac la opción que tenemos es
instalar Xamarin Studio.
www.sgcampus.com.mx	 @sgcampus
Xamarin:Herramientas
Ambiente de desarrollo:
Al realizar la instalación, el mismo instalador nos
ayudará instalar Xcode, simuladores de iOS,
Android Studio, emuladores para Android.
Emuladores Android destacados:
Xamarin Android Player
https://www.xamarin.com/android-player
Genymotion
https://www.genymotion.com/
www.sgcampus.com.mx	 @sgcampus
Xamarin: Introducción
Xamarin es un cross-platform para el desarrollo de
aplicaciones móviles. Xamarin permite una
abstracción de objetos de tal forma que
desarrollamos un core el cual tendrá todo lo común
a los proyectos de la diferentes plataformas
(Android, iOS, Windows Phone).
www.sgcampus.com.mx	 @sgcampus
Xamarin: Arqutectura
www.sgcampus.com.mx	 @sgcampus
Xamarin: Estructura del proyecto
www.sgcampus.com.mx	 @sgcampus
Xamarin: Referencias
www.sgcampus.com.mx	 @sgcampus
Xamarin: Xamarin.Forms
Xamarin.Forms es un framework que permite a los
desarrolladores crear interfaces de usuario
rápidamente. Proporciona su propia abstracción
para la interfaz de usuario que se representa
utilizando controles nativos en iOS, Android,
Windows o Windows Phone. Esto significa que las
aplicaciones pueden compartir una gran parte de
su código de interfaz de usuario y todavía
conservar el aspecto nativo de la plataforma de
destino.
www.sgcampus.com.mx	 @sgcampus
Xamarin: Xamarin.Forms-
Páginas
www.sgcampus.com.mx	 @sgcampus
Xamarin: Xamarin.Forms -
Layout
www.sgcampus.com.mx	 @sgcampus
Xamarin: StackLayout
Al desarrollar con Xamarin.Forms, nuestra UI es
compartida por las plataformas especificadas en
nuestra solución de VS / XS.
La primera es que cualquier desarrollador que
tenga conocimientos en WPF le será muy familiar
desarrollar XAML, adicionalmente se parece en
algunos aspectos cuando estamos desarrollando
los Layout de Android.
www.sgcampus.com.mx	 @sgcampus
Xamarin: Código XAML
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://
schemas.microsoft.com/winfx/2006/xaml"
x:Class="HelloXamarinFormsWorldXaml.StackLayoutExample1" Padding="20">
<StackLayout Spacing="10">
<Label Text="Stop" BackgroundColor="Red" Font="20" />
<Label Text="Slow down" BackgroundColor="Yellow" Font="20" />
<Label Text="Go" BackgroundColor="Green" Font="20" />
</StackLayout>
</ContentPage>
www.sgcampus.com.mx	 @sgcampus
Xamarin: Código C#
public class StackLayoutExample : ContentPage
{
public StackLayoutExample()
{
Padding = new Thickness(20);
var red = new Label
{
Text = "Stop", BackgroundColor = Color.Red, FontSize = 20
};
var yellow = new Label
{
Text = "Slow down", BackgroundColor = Color.Yellow, FontSize = 20
};
var green = new Label
{
Text = "Go", BackgroundColor = Color.Green, FontSize = 20
};
Content = new StackLayout
{
Spacing = 10,
Children = { red, yellow, green }
};
}
}
www.sgcampus.com.mx	 @sgcampus
Xamarin: Navegación
Navegación:
Para navegar entre pantallas se utiliza
await Navigation.PushAsync(new CustomPage());
Para cerrar la pantalla se utiliza
await Navigation.PopAsync();
www.sgcampus.com.mx	 @sgcampus
Xamarin: DependencyService
Xamarin.Forms permite a los desarrolladores definir
el comportamiento en los proyectos específicos de
la plataforma.
www.sgcampus.com.mx	 @sgcampus
Xamarin: DependencyService
www.sgcampus.com.mx	 @sgcampus
Se requiere declarar una interfaz, la cual definirá la forma de
interactuar con la funcionalidad específica de la plataforma.
Interfaz
public interface ITextToSpeech {
void Speak ( string text ); //note that interface members are public by default
}
Implementación
namespace TextToSpeech.WinPhone
{
public class TextToSpeechImplementation : ITextToSpeech
{
public TextToSpeechImplementation() {}
public async void Speak(string text)
{
SpeechSynthesizer synth = new SpeechSynthesizer();
await synth.SpeakTextAsync(text);
}
}
}
www.sgcampus.com.mx	 @sgcampus
Registro
using TextToSpeech.WinPhone;
[assembly: Xamarin.Forms.Dependency (typeof (TextToSpeechImplementation))]
namespace TextToSpeech.WinPhone {
Uso en Xamarin
public MainPage ()
{
var speak = new Button {
Text = "Hello, Forms !",
VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalOptions = LayoutOptions.CenterAndExpand,
};
speak.Clicked += (sender, e) => {
DependencyService.Get<ITextToSpeech>().Speak("Hello from Xamarin Forms");
};
Content = speak;
}
www.sgcampus.com.mx	 @sgcampus
Xamarin.Forms Multiscreen
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:local="clr-namespace:Phoneword;assembly=Phoneword"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Phoneword.CallHistoryPage">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness"
iOS="20, 40, 20, 20"
Android="20, 20, 20, 20"
WinPhone="20, 20, 20, 20" />
</ContentPage.Padding>
<ContentPage.Content>
<StackLayout VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
Orientation="Vertical"
Spacing="15">
<ListView ItemsSource="{x:Static local:App.PhoneNumbers}" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
www.sgcampus.com.mx	 @sgcampus
Dudas
¿Dudas?
Alder López
Chief software development / Research and development / NET Architect & Xamarin
https://mx.linkedin.com/in/alder1sismty
@devnet2
http://sg.com.mx/revista/47/desarrollo-apps-cross-platform-xamarinforms#.V0UPIGZEy8p
www.sgcampus.com.mx	 @sgcampus
Anexo
Ligas de interés:
https://developer.xamarin.com/guides/xamarin-forms/creating-mobile-apps-xamarin-forms/
https://developer.xamarin.com/guides/cross-platform/getting_started/requirements/
https://developer.xamarin.com/guides/cross-platform/getting_started/license/
https://developer.xamarin.com/guides/xamarin-forms/getting-started/introduction-to-xamarin-forms/
https://developer.xamarin.com/guides/xamarin-forms/dependency-service/device-orientation/
MvvmCross - https://github.com/slodge/MvvmCross/
Vernacular (for localization) - https://github.com/rdio/vernacular/
MonoGame (for XNA games) - http://monogame.codeplex.com/
NGraphics - NGraphics and its precursor https://github.com/praeclarum/CrossGraphics

Más contenido relacionado

La actualidad más candente

PUE DAY 2017: Introducción a Xamarin
PUE DAY 2017: Introducción a XamarinPUE DAY 2017: Introducción a Xamarin
PUE DAY 2017: Introducción a XamarinJavier Suárez Ruiz
 
Diseñando aplicaciones multiplataforma con Xamarin
Diseñando aplicaciones multiplataforma con XamarinDiseñando aplicaciones multiplataforma con Xamarin
Diseñando aplicaciones multiplataforma con XamarinSoftware Guru
 
Xamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller XamarinXamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller XamarinJavier Suárez Ruiz
 
Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps XamarinJavier Suárez Ruiz
 
Conociendo el resto de ecosistema Xamarin
Conociendo el resto de ecosistema XamarinConociendo el resto de ecosistema Xamarin
Conociendo el resto de ecosistema XamarinJavier Suárez Ruiz
 
Codemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinCodemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinJavier Suárez Ruiz
 
Xamarin Dev Days - Introducción a Xamarin
Xamarin Dev Days - Introducción a XamarinXamarin Dev Days - Introducción a Xamarin
Xamarin Dev Days - Introducción a XamarinJavier Suárez Ruiz
 
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinCodemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinJavier Suárez Ruiz
 
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
 
Introducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossIntroducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossJavier 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
 
Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
Crear Apps Multiplataforma compartiendo la mayor cantidad con XamarinCrear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
Crear Apps Multiplataforma compartiendo la mayor cantidad con XamarinJavier Suárez Ruiz
 
Microsoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinMicrosoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinJavier Suárez Ruiz
 

La actualidad más candente (20)

PUE DAY 2017: Introducción a Xamarin
PUE DAY 2017: Introducción a XamarinPUE DAY 2017: Introducción a Xamarin
PUE DAY 2017: Introducción a Xamarin
 
Diseñando aplicaciones multiplataforma con Xamarin
Diseñando aplicaciones multiplataforma con XamarinDiseñando aplicaciones multiplataforma con Xamarin
Diseñando aplicaciones multiplataforma con Xamarin
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 
Xamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller XamarinXamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller Xamarin
 
Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps Xamarin
 
Conociendo el resto de ecosistema Xamarin
Conociendo el resto de ecosistema XamarinConociendo el resto de ecosistema Xamarin
Conociendo el resto de ecosistema Xamarin
 
Xamarin forms
Xamarin formsXamarin forms
Xamarin forms
 
Servicios Xamarin
Servicios XamarinServicios Xamarin
Servicios Xamarin
 
Codemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinCodemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller Xamarin
 
Introduccion a xamarin
Introduccion a xamarinIntroduccion a xamarin
Introduccion a xamarin
 
Xamarin Dev Days - Introducción a Xamarin
Xamarin Dev Days - Introducción a XamarinXamarin Dev Days - Introducción a Xamarin
Xamarin Dev Days - Introducción a Xamarin
 
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinCodemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
 
Xamarin Live Player
Xamarin Live PlayerXamarin Live Player
Xamarin Live Player
 
Introducción a xamarin
Introducción a xamarinIntroducción a xamarin
Introducción a xamarin
 
Visual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaVisual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event Sevilla
 
Introducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossIntroducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCross
 
Extendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersExtendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom Renders
 
Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
Crear Apps Multiplataforma compartiendo la mayor cantidad con XamarinCrear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
 
Microsoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinMicrosoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller Xamarin
 
Testing de Apps Xamarin
Testing de Apps XamarinTesting de Apps Xamarin
Testing de Apps Xamarin
 

Destacado

¿Qué es E-commerce y como funciona en Colombia?
¿Qué es E-commerce y como funciona en Colombia?¿Qué es E-commerce y como funciona en Colombia?
¿Qué es E-commerce y como funciona en Colombia?Laura Mariño
 
Xamarin 基礎講座 2016年7月版
Xamarin 基礎講座 2016年7月版Xamarin 基礎講座 2016年7月版
Xamarin 基礎講座 2016年7月版Yoshito Tabuchi
 
Desarrollo de Apps nativas multiplataforma con Xamarin
Desarrollo de Apps nativas multiplataforma con XamarinDesarrollo de Apps nativas multiplataforma con Xamarin
Desarrollo de Apps nativas multiplataforma con XamarinItequia
 
Introducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLIntroducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLSorey García
 

Destacado (7)

¿Qué es E-commerce y como funciona en Colombia?
¿Qué es E-commerce y como funciona en Colombia?¿Qué es E-commerce y como funciona en Colombia?
¿Qué es E-commerce y como funciona en Colombia?
 
Xamarin 基礎講座 2016年7月版
Xamarin 基礎講座 2016年7月版Xamarin 基礎講座 2016年7月版
Xamarin 基礎講座 2016年7月版
 
Desarrollo de Apps nativas multiplataforma con Xamarin
Desarrollo de Apps nativas multiplataforma con XamarinDesarrollo de Apps nativas multiplataforma con Xamarin
Desarrollo de Apps nativas multiplataforma con Xamarin
 
Monkey space 2013
Monkey space 2013Monkey space 2013
Monkey space 2013
 
Tipos ecommerce
Tipos ecommerceTipos ecommerce
Tipos ecommerce
 
Introducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLIntroducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAML
 
Caracteristicas Microsoft SQL Server
Caracteristicas Microsoft SQL ServerCaracteristicas Microsoft SQL Server
Caracteristicas Microsoft SQL Server
 

Similar a Introducción al desarrollo de apps móviles con Xamarin (Android & iOS)

DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!Javier Suárez Ruiz
 
diapositivas de XAMARIN
diapositivas de XAMARINdiapositivas de XAMARIN
diapositivas de XAMARINAlonso Alvarez
 
Charla GDG Madrid: Cordova + AngularJS + Ionic
Charla GDG Madrid: Cordova + AngularJS + IonicCharla GDG Madrid: Cordova + AngularJS + Ionic
Charla GDG Madrid: Cordova + AngularJS + IonicRubén Aguilera
 
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con XamarinPlain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con XamarinJavier Suárez Ruiz
 
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
 
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
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistencoenriqueaguilar
 
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
 
Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxErickCarlos14
 
Testing Xamarin Test Cloud
Testing Xamarin Test CloudTesting Xamarin Test Cloud
Testing Xamarin Test CloudPlain Concepts
 
PhoneGap !Qué bueno que viniste¡
PhoneGap !Qué bueno que viniste¡PhoneGap !Qué bueno que viniste¡
PhoneGap !Qué bueno que viniste¡Rubén Aguilera
 
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
 
Women Who Code Bogota: Introduction to Xamarin Forms
Women Who Code Bogota: Introduction to Xamarin FormsWomen Who Code Bogota: Introduction to Xamarin Forms
Women Who Code Bogota: Introduction to Xamarin FormsLeomaris Reyes
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinJavier Suárez Ruiz
 
Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Javier Suárez Ruiz
 

Similar a Introducción al desarrollo de apps móviles con Xamarin (Android & iOS) (20)

primera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptxprimera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptx
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!
 
diapositivas de XAMARIN
diapositivas de XAMARINdiapositivas de XAMARIN
diapositivas de XAMARIN
 
Expo. moviles
Expo. movilesExpo. moviles
Expo. moviles
 
Charla GDG Madrid: Cordova + AngularJS + Ionic
Charla GDG Madrid: Cordova + AngularJS + IonicCharla GDG Madrid: Cordova + AngularJS + Ionic
Charla GDG Madrid: Cordova + AngularJS + Ionic
 
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con XamarinPlain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
 
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...
 
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
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistenco
 
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...
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptx
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 
Testing Xamarin Test Cloud
Testing Xamarin Test CloudTesting Xamarin Test Cloud
Testing Xamarin Test Cloud
 
PhoneGap !Qué bueno que viniste¡
PhoneGap !Qué bueno que viniste¡PhoneGap !Qué bueno que viniste¡
PhoneGap !Qué bueno que viniste¡
 
6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles 6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles
 
.NET Day Guatemala
.NET Day Guatemala.NET Day Guatemala
.NET Day Guatemala
 
Women Who Code Bogota: Introduction to Xamarin Forms
Women Who Code Bogota: Introduction to Xamarin FormsWomen Who Code Bogota: Introduction to Xamarin Forms
Women Who Code Bogota: Introduction to Xamarin Forms
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller Xamarin
 
Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4
 

Más de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Introducción al desarrollo de apps móviles con Xamarin (Android & iOS)

  • 1. www.sgcampus.com.mx @sgcampus www.sgcampus.com.mx @sgcampus Alder Lopez Xamarin: Una introducción al desarrollo de aplicaciones móviles para Android & iOS
  • 2. www.sgcampus.com.mx @sgcampus Xamarin: Objetivo Consideraciones: •  Es deseable tener conocimientos .NET, C#. •  Para desarrollar para iOS se requiere Mac como estación para desarrollo o como servidor de compilación con Xcode. •  Debe ser miembro del Apple Developer Program. Objetivo General: Al finalizar será capaz de desarrollar una aplicación móvil para Android & iOS utilizando .NET.
  • 3. www.sgcampus.com.mx @sgcampus Xamarin: Herramientas Ambiente de desarrollo: Tenemos dos opciones para instalar el ambiente de desarrollo, el primero es descargar el instalador de X a m a r i n d e s d e l a p a g i n a https://www.xamarin.com/; la segunda es descargar Visual Studio Community 2015 (apartir de que Micrsoft compro Xamarin en Marzo 2016). En el caso de Mac la opción que tenemos es instalar Xamarin Studio.
  • 4. www.sgcampus.com.mx @sgcampus Xamarin:Herramientas Ambiente de desarrollo: Al realizar la instalación, el mismo instalador nos ayudará instalar Xcode, simuladores de iOS, Android Studio, emuladores para Android. Emuladores Android destacados: Xamarin Android Player https://www.xamarin.com/android-player Genymotion https://www.genymotion.com/
  • 5. www.sgcampus.com.mx @sgcampus Xamarin: Introducción Xamarin es un cross-platform para el desarrollo de aplicaciones móviles. Xamarin permite una abstracción de objetos de tal forma que desarrollamos un core el cual tendrá todo lo común a los proyectos de la diferentes plataformas (Android, iOS, Windows Phone).
  • 9. www.sgcampus.com.mx @sgcampus Xamarin: Xamarin.Forms Xamarin.Forms es un framework que permite a los desarrolladores crear interfaces de usuario rápidamente. Proporciona su propia abstracción para la interfaz de usuario que se representa utilizando controles nativos en iOS, Android, Windows o Windows Phone. Esto significa que las aplicaciones pueden compartir una gran parte de su código de interfaz de usuario y todavía conservar el aspecto nativo de la plataforma de destino.
  • 12. www.sgcampus.com.mx @sgcampus Xamarin: StackLayout Al desarrollar con Xamarin.Forms, nuestra UI es compartida por las plataformas especificadas en nuestra solución de VS / XS. La primera es que cualquier desarrollador que tenga conocimientos en WPF le será muy familiar desarrollar XAML, adicionalmente se parece en algunos aspectos cuando estamos desarrollando los Layout de Android.
  • 13. www.sgcampus.com.mx @sgcampus Xamarin: Código XAML <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http:// schemas.microsoft.com/winfx/2006/xaml" x:Class="HelloXamarinFormsWorldXaml.StackLayoutExample1" Padding="20"> <StackLayout Spacing="10"> <Label Text="Stop" BackgroundColor="Red" Font="20" /> <Label Text="Slow down" BackgroundColor="Yellow" Font="20" /> <Label Text="Go" BackgroundColor="Green" Font="20" /> </StackLayout> </ContentPage>
  • 14. www.sgcampus.com.mx @sgcampus Xamarin: Código C# public class StackLayoutExample : ContentPage { public StackLayoutExample() { Padding = new Thickness(20); var red = new Label { Text = "Stop", BackgroundColor = Color.Red, FontSize = 20 }; var yellow = new Label { Text = "Slow down", BackgroundColor = Color.Yellow, FontSize = 20 }; var green = new Label { Text = "Go", BackgroundColor = Color.Green, FontSize = 20 }; Content = new StackLayout { Spacing = 10, Children = { red, yellow, green } }; } }
  • 15. www.sgcampus.com.mx @sgcampus Xamarin: Navegación Navegación: Para navegar entre pantallas se utiliza await Navigation.PushAsync(new CustomPage()); Para cerrar la pantalla se utiliza await Navigation.PopAsync();
  • 16. www.sgcampus.com.mx @sgcampus Xamarin: DependencyService Xamarin.Forms permite a los desarrolladores definir el comportamiento en los proyectos específicos de la plataforma.
  • 18. www.sgcampus.com.mx @sgcampus Se requiere declarar una interfaz, la cual definirá la forma de interactuar con la funcionalidad específica de la plataforma. Interfaz public interface ITextToSpeech { void Speak ( string text ); //note that interface members are public by default } Implementación namespace TextToSpeech.WinPhone { public class TextToSpeechImplementation : ITextToSpeech { public TextToSpeechImplementation() {} public async void Speak(string text) { SpeechSynthesizer synth = new SpeechSynthesizer(); await synth.SpeakTextAsync(text); } } }
  • 19. www.sgcampus.com.mx @sgcampus Registro using TextToSpeech.WinPhone; [assembly: Xamarin.Forms.Dependency (typeof (TextToSpeechImplementation))] namespace TextToSpeech.WinPhone { Uso en Xamarin public MainPage () { var speak = new Button { Text = "Hello, Forms !", VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, }; speak.Clicked += (sender, e) => { DependencyService.Get<ITextToSpeech>().Speak("Hello from Xamarin Forms"); }; Content = speak; }
  • 20. www.sgcampus.com.mx @sgcampus Xamarin.Forms Multiscreen <?xml version="1.0" encoding="UTF-8"?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:local="clr-namespace:Phoneword;assembly=Phoneword" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Phoneword.CallHistoryPage"> <ContentPage.Padding> <OnPlatform x:TypeArguments="Thickness" iOS="20, 40, 20, 20" Android="20, 20, 20, 20" WinPhone="20, 20, 20, 20" /> </ContentPage.Padding> <ContentPage.Content> <StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Orientation="Vertical" Spacing="15"> <ListView ItemsSource="{x:Static local:App.PhoneNumbers}" /> </StackLayout> </ContentPage.Content> </ContentPage>
  • 21. www.sgcampus.com.mx @sgcampus Dudas ¿Dudas? Alder López Chief software development / Research and development / NET Architect & Xamarin https://mx.linkedin.com/in/alder1sismty @devnet2 http://sg.com.mx/revista/47/desarrollo-apps-cross-platform-xamarinforms#.V0UPIGZEy8p
  • 22. www.sgcampus.com.mx @sgcampus Anexo Ligas de interés: https://developer.xamarin.com/guides/xamarin-forms/creating-mobile-apps-xamarin-forms/ https://developer.xamarin.com/guides/cross-platform/getting_started/requirements/ https://developer.xamarin.com/guides/cross-platform/getting_started/license/ https://developer.xamarin.com/guides/xamarin-forms/getting-started/introduction-to-xamarin-forms/ https://developer.xamarin.com/guides/xamarin-forms/dependency-service/device-orientation/ MvvmCross - https://github.com/slodge/MvvmCross/ Vernacular (for localization) - https://github.com/rdio/vernacular/ MonoGame (for XNA games) - http://monogame.codeplex.com/ NGraphics - NGraphics and its precursor https://github.com/praeclarum/CrossGraphics