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

27

description

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

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

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

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

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

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

HighLoad

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

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

UI Common %

Windows phone

2403

5988

72%

Android 3727 62%

iOS 5774 51%

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

Agenda

1.  Xamarin

2.  Xamarin + MVVM

3.  Общий UI

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

1. Xamarin

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

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

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

Xamarin

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

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

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

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

Android API App

Mono

Dalvik

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

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

Xamarin C# C

C Compiler ipa

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

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

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

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

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

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

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

Общий код

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

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

2. Xamarin + MVVM

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

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

MVVM

MVVM подход

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

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

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

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

MVVM для Xamarin

MVVM Cross

MVVM Light

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

MVVM приложение

│ Demo

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

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

UI Common %

Windows phone

2403

5988

72%

Android 3727 62%

iOS 5774 51%

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

3 Общий UI

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

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

Общий UI?

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

Xamarin.Forms

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

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

Layouts

StackLayout AbsoluteLayout RelativeLayout GridLayout ContentView ScrollView Frame

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

Xamarin Forms

│ Demo

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

Appercode

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

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

Навигация ala WinRT

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

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

Appercode

│ Demo

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

Мелкие фишки

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

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

Вопросы?

│ {Digital Sparta | Appercode } │ [email protected]; @ad1Dima; appercode.com;