SlideShare a Scribd company logo
1 of 27
Yeray Julian - @josueyeray
Rafa Serna - @rafasermed
XAMARIN FORMS
Y
A
X B
Antes… larga vida y prosperidad!
Xamarin.Forms – Y esto que leches es?
iOS
Android
Windows Phone
Construir interfaces nativas para iOS, Android y Windows Phone desde una única
base de código C# compartida.
Xamarin.Forms – Y esto que leches es?
Construir interfaces nativas para iOS, Android y Windows Phone desde una única
base de código C# compartida.
4
XAMARIN
XAMARIN.FORMS
Android 4.0+ Windows Phone 8.0iOS 6.1+ Windows Phone 8.0 (Silverlight)
Xamarin.Forms – Páginas
Elemento Visual (contenedor), primario.
5
Content MasterDetail Navigation Tabbed Carousel
• Android: Activity
• iOS: View Controller
• Windows Phone: Page
Xamarin.Forms – Páginas
Elemento Visual (contenedor), primario.
6
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SampleApp.Page1">
......
......
......
</ContentPage> XAML
Xamarin.Forms – Páginas
Elemento Visual (contenedor), primario.
7
MainPage = new ContentPage
{
Content = ……
………
………
};
C#
Xamarin.Forms – Layouts 8
Stack Absolute Relative Grid ContentView ScrollView Frame
Elemento contenedor de controles de interfaz de usuario en estructuras lógicas.
Xamarin.Forms – Layouts 9
Elemento contenedor de controles de interfaz de usuario en estructuras lógicas.
<ContentPage.Content>
<StackLayout HorizontalOptions="StartAndExpand"
Orientation=“Vertical">
.....
.....
.....
</StackLayout>
</ContentPage.Content>
XAML
Xamarin.Forms – Layouts
1
0
Elemento contenedor de controles de interfaz de usuario en estructuras lógicas.
MainPage = new ContentPage
{
Content = new StackLayout
{
VerticalOptions = LayoutOptions.Center,
Children = {
……
……
}
}
};
C#
Xamarin.Forms – Controles
Colección de objetos visuales que son representados por sus homónimos en cada
una de las plataformas.
1
1
Xamarin.Forms – Controles
Colección de objetos visuales que son representados por sus homónimos en cada
una de las plataformas.
1
2
<Label Text="{Binding MainText}" Font="Large"
VerticalOptions="Center" HorizontalOptions="Center" />
<Button Text="Click Me!“ HorizontalOptions="Center"
VerticalOptions="CenterAndExpand“
Clicked="OnButtonClicked" />
XAML
Xamarin.Forms – Controles
Colección de objetos visuales que son representados por sus homónimos en cada
una de las plataformas.
1
3
new Label {
XAlign = TextAlignment.Center,
Text = "Welcome to Xamarin Forms!"
}
new Button {
Text = "Click Me!",
Font = Font.SystemFontOfSize(NamedSize.Large),
BorderWidth = 1,
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.CenterAndExpand
};
C#
Xamarin.Forms – Demo Time
1
4
Xamarin.Forms – Converters
Implemetar el Interfaz IValueConverter
1
5
class DoubleToIntConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
double multiplier;
if (!Double.TryParse(parameter as string, out multiplier))
multiplier = 1;
return (int)Math.Round(multiplier * (double)value);
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
}
}
Xamarin.Forms – Converters
Implemetar el Interfaz IValueConverter
1
6
<ContentPage.Resources>
<ResourceDictionary>
<local:DoubleToIntConverter x:Key="intConverter" />
</ResourceDictionary>
</ContentPage.Resources>
<Label Text="{Binding Color.R,
Converter={StaticResource intConverter},
ConverterParameter=255,
StringFormat='R={0:X2}'}" />
CONVERTERS – Demo Time 1
7
Xamarin.Forms – Animaciones 1
8
FadeTo
LayoutTo
ScaleTo
TranslateTo
RotateTo
RotateXTo
RotateYTo
RelRotateTo
RelScaleTo
Xamarin.Forms – Animaciones 1
9
Element.FadeTo(opacity, duration, easing):
Element.LayoutTo(rectangle, duration, easing);
Element.RotateTo(rotation, duration, easing);
Element.ScaleTo(scale, duration, easing);
Element.TranslateTo(X, Y, duration, easing);
Easing:
.BounceIn
.BounceOut
.CubicIn
.CubicInOut
.CubicOut
.Linear
.SinIn
.SinInOut
.SinOut
.SpringIn
.SpringOut
Xamarin.Forms –Triggers
Implementar TriggerAction<Entry>
2
0
<Style.Triggers>
<Trigger Property="Entry.IsFocused" Value="True" TargetType="Entry">
<Setter Property="Entry.TextColor" Value="Red" />
</Trigger>
</Style.Triggers>
<StackLayout Orientation="Horizontal">
<Label Text="Your age: " />
<Entry TextColor="Black“ Placeholder="Age" />
</StackLayout>
Xamarin.Forms – Event Triggers
Cuando esta propiedad tiene ese valor, a continuación, establece esta otra
propiedad con este nuevo valor.
2
1
public class EntryValidation : TriggerAction<Entry>
{
protected override void Invoke(Entry sender)
{
int parsed;
bool valid = int.TryParse(sender.Text, out parsed);
if (!valid) {
sender.TextColor = Color.Red;
}
else {
sender.TextColor = Color.Blue;
}
}
} <Entry TextColor="Black“ Placeholder="Age">
<Entry.Triggers>
<EventTrigger Event="TextChanged">
<local:EntryValidation />
</EventTrigger>
</Entry.Triggers>
</Entry>
Xamarin.Forms – Behaviors
Implementar Behavior<T>
2
2
public class ChangeColorButtonBehavior : Behavior<Button>
{
protected override void OnAttachedTo(Button bindable)
{
bindable.Clicked += ButtonClicked;
base.OnAttachedTo(bindable);
}
protected override void OnDetachingFrom(Button bindable)
{
bindable.Clicked -= ButtonClicked;
base.OnDetachingFrom(bindable);
}
private void ButtonClicked(object sender, EventArgs e)
{
var button = sender as Button;
button.BackgroundColor = button.BackgroundColor != Color.Blue ?
Color.Blue : Color.Red;
}
}
Xamarin.Forms – Behaviors
Implementar Behavior<T>
2
3
<Button Text="Click to chance color!">
<Button.Behaviors>
<behaviors:ChangeColorButtonBehavior />
</Button.Behaviors>
</Button>
<Button Text="Click to do nothing!" />
BEHAVIORS y TRIGGERS – Demo Time 2
4
PREGUNTAS?
Habla ahora o no tendrás
monito!!!
?
Yeray Julian - @josueyeray
Rafa Serna - @rafasermed
¡¡¡Si te ha gustado no olvides
rellenar la encuesta!!!
Thanks
Y
A
X B

More Related Content

What's hot

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
Javier Suárez Ruiz
 

What's hot (20)

Arquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appArquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera app
 
Introducción al desarrollo de aplicaciones Xamarin
Introducción al desarrollo de aplicaciones XamarinIntroducción al desarrollo de aplicaciones Xamarin
Introducción al desarrollo de aplicaciones Xamarin
 
Introduccion a xamarin
Introduccion a xamarinIntroduccion a xamarin
Introduccion a xamarin
 
Servicios Xamarin
Servicios XamarinServicios Xamarin
Servicios Xamarin
 
Introducción a xamarin
Introducción a xamarinIntroducción a xamarin
Introducción a xamarin
 
Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps Xamarin
 
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
 
Conociendo el resto de ecosistema Xamarin
Conociendo el resto de ecosistema XamarinConociendo el resto de ecosistema Xamarin
Conociendo el resto de ecosistema Xamarin
 
Desarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloDesarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrollo
 
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
 
Xamarin Live Player
Xamarin Live PlayerXamarin Live Player
Xamarin Live Player
 
WinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSWinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOS
 
Xamarin y Microsoft Azure
Xamarin y Microsoft AzureXamarin y Microsoft Azure
Xamarin y Microsoft Azure
 
Codemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinCodemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller Xamarin
 
Testing de Apps Xamarin
Testing de Apps XamarinTesting de Apps Xamarin
Testing de Apps Xamarin
 
Introduccion a Xamarin
Introduccion a XamarinIntroduccion a Xamarin
Introduccion 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
 
Novedades de Xamarin 4
Novedades de Xamarin 4Novedades de Xamarin 4
Novedades de Xamarin 4
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller Xamarin
 
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.FormsMonkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
 

Viewers also liked

Viewers also liked (10)

Mvvm in universal apps
Mvvm in universal appsMvvm in universal apps
Mvvm in universal apps
 
Novedades en XAML
Novedades en XAMLNovedades en XAML
Novedades en XAML
 
#WPhoneIO Behaviors, Animaciones y VisualStates
#WPhoneIO Behaviors, Animaciones y VisualStates#WPhoneIO Behaviors, Animaciones y VisualStates
#WPhoneIO Behaviors, Animaciones y VisualStates
 
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...
 
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
 
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
 
Xamarin University Sprint Fling 2016
Xamarin University Sprint Fling 2016Xamarin University Sprint Fling 2016
Xamarin University Sprint Fling 2016
 
Introducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossIntroducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCross
 
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
 

Similar to Intro to xamarin forms: converters, animations, behaviors and triggers

Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptx
ErickCarlos14
 
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
EliasChoque14
 

Similar to Intro to xamarin forms: converters, animations, behaviors and triggers (20)

Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Una vuelta por xamarin - .NET Conf CL 2018
Una vuelta por xamarin - .NET Conf CL 2018Una vuelta por xamarin - .NET Conf CL 2018
Una vuelta por xamarin - .NET Conf CL 2018
 
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...
 
Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptx
 
Adaptando Apps Xamarin.Forms a tabletas
Adaptando Apps Xamarin.Forms a tabletasAdaptando Apps Xamarin.Forms a tabletas
Adaptando Apps Xamarin.Forms a tabletas
 
primera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptxprimera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptx
 
Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018
 
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
 
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
 
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
 
Xamarin 360
Xamarin 360Xamarin 360
Xamarin 360
 
Desarrollando apps multi plataformas con xamarin forms
Desarrollando apps multi plataformas con xamarin formsDesarrollando apps multi plataformas con xamarin forms
Desarrollando apps multi plataformas con xamarin forms
 
Xamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller XamarinXamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller Xamarin
 
Prepara tus apps de SharePoint y Office 365 para el futuro
Prepara tus apps de SharePoint y Office 365 para el futuroPrepara tus apps de SharePoint y Office 365 para el futuro
Prepara tus apps de SharePoint y Office 365 para el futuro
 
dotNetMálaga - Taller Xamarin
dotNetMálaga - Taller XamarindotNetMálaga - Taller Xamarin
dotNetMálaga - Taller Xamarin
 
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 (...
 
Introducción al desarrollo de aplicaciones en xamarin
Introducción al desarrollo de aplicaciones en xamarinIntroducción al desarrollo de aplicaciones en xamarin
Introducción al desarrollo de aplicaciones en xamarin
 
Xamarin
XamarinXamarin
Xamarin
 
Como desarrollar aplicaciones moviles, que debemos tener en cuenta?
Como desarrollar aplicaciones moviles, que debemos tener en cuenta?Como desarrollar aplicaciones moviles, que debemos tener en cuenta?
Como desarrollar aplicaciones moviles, que debemos tener en cuenta?
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 

More from Josué Yeray Julián Ferreiro

More from Josué Yeray Julián Ferreiro (20)

Destapando superhéroes
Destapando superhéroesDestapando superhéroes
Destapando superhéroes
 
Xamarin Introduction for Xamarin DevDays Seville
Xamarin Introduction for Xamarin DevDays SevilleXamarin Introduction for Xamarin DevDays Seville
Xamarin Introduction for Xamarin DevDays Seville
 
Azure Notification Hub y Xamarin
Azure Notification Hub y XamarinAzure Notification Hub y Xamarin
Azure Notification Hub y Xamarin
 
Introducción al desarrollo para Hololens
Introducción al desarrollo para HololensIntroducción al desarrollo para Hololens
Introducción al desarrollo para Hololens
 
Novedades Xamarin.Forms 2
Novedades Xamarin.Forms 2Novedades Xamarin.Forms 2
Novedades Xamarin.Forms 2
 
Bailando con monos - Introducción a Xamarin
Bailando con monos - Introducción a XamarinBailando con monos - Introducción a Xamarin
Bailando con monos - Introducción a Xamarin
 
Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
 
Taller Xamarin.Forms TLP Innova
Taller Xamarin.Forms TLP InnovaTaller Xamarin.Forms TLP Innova
Taller Xamarin.Forms TLP Innova
 
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
 
New controls in Windows 10
New controls in Windows 10New controls in Windows 10
New controls in Windows 10
 
Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
 
Apps monetization for Windows and Windows Phone
Apps monetization for Windows and Windows PhoneApps monetization for Windows and Windows Phone
Apps monetization for Windows and Windows Phone
 
Introducción al desarrollo de aplicaciones universales
Introducción al desarrollo de aplicaciones universalesIntroducción al desarrollo de aplicaciones universales
Introducción al desarrollo de aplicaciones universales
 
Nokia mixradio api integration
Nokia mixradio api integrationNokia mixradio api integration
Nokia mixradio api integration
 
Cimbalino Toolkit and Multilingual App Toolkit
Cimbalino Toolkit and Multilingual App ToolkitCimbalino Toolkit and Multilingual App Toolkit
Cimbalino Toolkit and Multilingual App Toolkit
 
Nokia Imaging SDK 1.0
Nokia Imaging SDK 1.0Nokia Imaging SDK 1.0
Nokia Imaging SDK 1.0
 
Nokia imaging sdk
Nokia imaging sdkNokia imaging sdk
Nokia imaging sdk
 
Windows Phone 8: MVVM pattern
Windows Phone 8: MVVM patternWindows Phone 8: MVVM pattern
Windows Phone 8: MVVM pattern
 
Novedades de Windows Phone 8
Novedades de Windows Phone 8Novedades de Windows Phone 8
Novedades de Windows Phone 8
 
RIATec Windows Phone 8 NFC features
RIATec Windows Phone 8 NFC featuresRIATec Windows Phone 8 NFC features
RIATec Windows Phone 8 NFC features
 

Recently uploaded

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Recently uploaded (11)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Intro to xamarin forms: converters, animations, behaviors and triggers

  • 1. Yeray Julian - @josueyeray Rafa Serna - @rafasermed XAMARIN FORMS Y A X B
  • 2. Antes… larga vida y prosperidad!
  • 3. Xamarin.Forms – Y esto que leches es? iOS Android Windows Phone Construir interfaces nativas para iOS, Android y Windows Phone desde una única base de código C# compartida.
  • 4. Xamarin.Forms – Y esto que leches es? Construir interfaces nativas para iOS, Android y Windows Phone desde una única base de código C# compartida. 4 XAMARIN XAMARIN.FORMS Android 4.0+ Windows Phone 8.0iOS 6.1+ Windows Phone 8.0 (Silverlight)
  • 5. Xamarin.Forms – Páginas Elemento Visual (contenedor), primario. 5 Content MasterDetail Navigation Tabbed Carousel • Android: Activity • iOS: View Controller • Windows Phone: Page
  • 6. Xamarin.Forms – Páginas Elemento Visual (contenedor), primario. 6 <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="SampleApp.Page1"> ...... ...... ...... </ContentPage> XAML
  • 7. Xamarin.Forms – Páginas Elemento Visual (contenedor), primario. 7 MainPage = new ContentPage { Content = …… ……… ……… }; C#
  • 8. Xamarin.Forms – Layouts 8 Stack Absolute Relative Grid ContentView ScrollView Frame Elemento contenedor de controles de interfaz de usuario en estructuras lógicas.
  • 9. Xamarin.Forms – Layouts 9 Elemento contenedor de controles de interfaz de usuario en estructuras lógicas. <ContentPage.Content> <StackLayout HorizontalOptions="StartAndExpand" Orientation=“Vertical"> ..... ..... ..... </StackLayout> </ContentPage.Content> XAML
  • 10. Xamarin.Forms – Layouts 1 0 Elemento contenedor de controles de interfaz de usuario en estructuras lógicas. MainPage = new ContentPage { Content = new StackLayout { VerticalOptions = LayoutOptions.Center, Children = { …… …… } } }; C#
  • 11. Xamarin.Forms – Controles Colección de objetos visuales que son representados por sus homónimos en cada una de las plataformas. 1 1
  • 12. Xamarin.Forms – Controles Colección de objetos visuales que son representados por sus homónimos en cada una de las plataformas. 1 2 <Label Text="{Binding MainText}" Font="Large" VerticalOptions="Center" HorizontalOptions="Center" /> <Button Text="Click Me!“ HorizontalOptions="Center" VerticalOptions="CenterAndExpand“ Clicked="OnButtonClicked" /> XAML
  • 13. Xamarin.Forms – Controles Colección de objetos visuales que son representados por sus homónimos en cada una de las plataformas. 1 3 new Label { XAlign = TextAlignment.Center, Text = "Welcome to Xamarin Forms!" } new Button { Text = "Click Me!", Font = Font.SystemFontOfSize(NamedSize.Large), BorderWidth = 1, HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.CenterAndExpand }; C#
  • 15. Xamarin.Forms – Converters Implemetar el Interfaz IValueConverter 1 5 class DoubleToIntConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { double multiplier; if (!Double.TryParse(parameter as string, out multiplier)) multiplier = 1; return (int)Math.Round(multiplier * (double)value); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { } }
  • 16. Xamarin.Forms – Converters Implemetar el Interfaz IValueConverter 1 6 <ContentPage.Resources> <ResourceDictionary> <local:DoubleToIntConverter x:Key="intConverter" /> </ResourceDictionary> </ContentPage.Resources> <Label Text="{Binding Color.R, Converter={StaticResource intConverter}, ConverterParameter=255, StringFormat='R={0:X2}'}" />
  • 18. Xamarin.Forms – Animaciones 1 8 FadeTo LayoutTo ScaleTo TranslateTo RotateTo RotateXTo RotateYTo RelRotateTo RelScaleTo
  • 19. Xamarin.Forms – Animaciones 1 9 Element.FadeTo(opacity, duration, easing): Element.LayoutTo(rectangle, duration, easing); Element.RotateTo(rotation, duration, easing); Element.ScaleTo(scale, duration, easing); Element.TranslateTo(X, Y, duration, easing); Easing: .BounceIn .BounceOut .CubicIn .CubicInOut .CubicOut .Linear .SinIn .SinInOut .SinOut .SpringIn .SpringOut
  • 20. Xamarin.Forms –Triggers Implementar TriggerAction<Entry> 2 0 <Style.Triggers> <Trigger Property="Entry.IsFocused" Value="True" TargetType="Entry"> <Setter Property="Entry.TextColor" Value="Red" /> </Trigger> </Style.Triggers> <StackLayout Orientation="Horizontal"> <Label Text="Your age: " /> <Entry TextColor="Black“ Placeholder="Age" /> </StackLayout>
  • 21. Xamarin.Forms – Event Triggers Cuando esta propiedad tiene ese valor, a continuación, establece esta otra propiedad con este nuevo valor. 2 1 public class EntryValidation : TriggerAction<Entry> { protected override void Invoke(Entry sender) { int parsed; bool valid = int.TryParse(sender.Text, out parsed); if (!valid) { sender.TextColor = Color.Red; } else { sender.TextColor = Color.Blue; } } } <Entry TextColor="Black“ Placeholder="Age"> <Entry.Triggers> <EventTrigger Event="TextChanged"> <local:EntryValidation /> </EventTrigger> </Entry.Triggers> </Entry>
  • 22. Xamarin.Forms – Behaviors Implementar Behavior<T> 2 2 public class ChangeColorButtonBehavior : Behavior<Button> { protected override void OnAttachedTo(Button bindable) { bindable.Clicked += ButtonClicked; base.OnAttachedTo(bindable); } protected override void OnDetachingFrom(Button bindable) { bindable.Clicked -= ButtonClicked; base.OnDetachingFrom(bindable); } private void ButtonClicked(object sender, EventArgs e) { var button = sender as Button; button.BackgroundColor = button.BackgroundColor != Color.Blue ? Color.Blue : Color.Red; } }
  • 23. Xamarin.Forms – Behaviors Implementar Behavior<T> 2 3 <Button Text="Click to chance color!"> <Button.Behaviors> <behaviors:ChangeColorButtonBehavior /> </Button.Behaviors> </Button> <Button Text="Click to do nothing!" />
  • 24. BEHAVIORS y TRIGGERS – Demo Time 2 4
  • 25. PREGUNTAS? Habla ahora o no tendrás monito!!! ?
  • 26.
  • 27. Yeray Julian - @josueyeray Rafa Serna - @rafasermed ¡¡¡Si te ha gustado no olvides rellenar la encuesta!!! Thanks Y A X B