Xamarin: опыт использования. Дмитрий Адодин

Post on 23-Jun-2015

192 views 0 download

Tags:

description

Xamarin: опыт использования

Transcript of Xamarin: опыт использования. Дмитрий Адодин

Xamarin: опыт использования

Дмитрий Адодин

HighLoad

Статистика общего кода в Konferenza

UI Common %

Windows phone

2403

5988

72%

Android 3727 62%

iOS 5774 51%

Agenda

1.  Xamarin

2.  Xamarin + MVVM

3.  Общий UI

1. Xamarin

60% общего кода*

*по заявлению Xamarin

Xamarin

Базируется на Mono, предоставляет обертки над системными вызовами

Существуют версии для следующих платформ │  Xamarin.iOS │  Xamarin.Android │  Xamarin.Mac

Как работает на Android

Android API App

Mono

Dalvik

Как работает на iOS

Xamarin C# C

C Compiler ipa

Соответствие API Android

Java:  │  Intent  i  =  new  Intent(this,  AnotherActivity.class);  startActivity(i);    C#:  │  Intent  i  =  new  Intent(this,  typeof(AnotherActivity));  StartActivity(i);  

Соответствие API iOS

Objective-­‐C:  │  [self.navigationController  pushViewController:yourViewController  animated:YES];    C#:  │  this.NavigationController.PushViewController(yourViewController,  true);  

Общий код

С помощью Xamarin можно обеспечить общий код для работы с сервисом, хранением данных, многопоточностью

2. Xamarin + MVVM

До 70% общего кода

MVVM

MVVM подход

│ Позволяет переиспользовать большую часть View Model │ View пишутся отдельно под

каждую платформу

*схема с сайта rarcher.azurewebsites.net

MVVM для Xamarin

MVVM Cross

MVVM Light

MVVM приложение

│ Demo

Статистика общего кода в Konferenza

UI Common %

Windows phone

2403

5988

72%

Android 3727 62%

iOS 5774 51%

3 Общий UI

До 90% общего кода

Общий UI?

Xamarin.Forms

Собственный кросс-платформенный UI │  Появился как развитие MonoTouch.Dialog и MonoDroid.Dialog │  Базируется на идеях UI Android и iOS │  Поддерживает XAML │  Bindings

Layouts

StackLayout AbsoluteLayout RelativeLayout GridLayout ContentView ScrollView Frame

Xamarin Forms

│ Demo

Appercode

UI Framework │  XAML │  Bindings │  Стили │  UI модель ala Silverlight │  Механизмы навигации

Навигация ala WinRT

Silverlight для WindowsPhone  this.NavigationService.Navigate(new  Uri("/View/SelectTable.xaml?parameter=smtg",  UriKind.Relative);      В Appercode  this.NavigationService.Navigate(typeof(SomePage),  parameter);  

Appercode

│ Demo

Мелкие фишки

Android │  Scroll по двум направлениям iOS │  Работа с клавиатурой

Вопросы?

│ {Digital Sparta | Appercode } │ ad1@appercode.com; @ad1Dima; appercode.com;