Xamarin: опыт использования. Дмитрий Адодин
-
Upload
yandex -
Category
Technology
-
view
192 -
download
0
description
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 } │ [email protected]; @ad1Dima; appercode.com;