Vývoj mobilních aplikací pomocí frameworku Xamarin

Podobné dokumenty
Vývoj mobilních aplikací pomocí frameworku Xamarin

CineStar Černý Most Praha

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

WPF Desktopové aplikace

Desktop GUI. IW5 - Programování v.net a C# Desktop GUI

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework

Nástroje na vývoj aplikací pro ios Trocha motivace na úvod Co budete potřebovat Co když nemáte k dispozici počítač s macos? Vývojové prostředí Xcode

LEKCE 4. Design aplikace, rozmístění a polohování prvků. Rozmístění prvků prezentačního rozhraní

Vývoj univerzálních aplikací pro Windows 10. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

Obsah. Úvod 11. Vytvoření emulátoru 20 Vytvoření emulátoru platformy Android 4.4 Wearable 22 Spouštění aplikací na reálném zařízení 23

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Stručný obsah. Část I. Část II. Část III. Úvod do vývoje v prostředí Visual Studio 25. Návrh uživatelského rozhraní 127

MVVM pro desktop i web

Studentská tvůrčí a odborná činnost STOČ Petr Čápek

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

Architektura. Vedení sesterské dokumentace

Historie, současnost a budoucnost ASP.NET

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

PV239/WP. Vývoj univerzálních Windows Store aplikací. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

Novinky ve Visual Studio Tomáš Kroupa

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

Technologie Sharepoint

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

XAMARIN 10 PRAKTICKÝCH ZKUŠENOSTÍ. Roman Fischer

KMI / TMA Tvorba mobilních aplikací. 3. seminář ZS 2016/2017 Středa 13:15-15:45

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

KMI / TMA. Tvorba mobilních aplikací. 3. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

Java a XML. 10/26/09 1/7 Java a XML

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

První kapitola úvod do problematiky

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

Workshop Exact Software CEE

Vytvoření.NET komponenty (DLL) ve Visual Studiu

WCF RIA Services. aneb jak na RIA aplikace v Silverlightu

Mobile application developent

Ing. Jiří Fůsek. Základní informace. Pracovní zkušenosti. Vzdělání. 09/ nyní Freelancer. 09/ /2010 Univerzita Tomáše Bati ve Zlíně

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor

Návrh a testování vybraných scénářů pro uživatelsky přívětivé aplikace

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

eretail.cz MANUÁL PRO PARTNERY

Propojení Spectu - POSlavu

Programátorské večery. Tomáš Herceg Microsoft Student Partner

XD39NUR Semestrální práce Zimní semestr 2013/2014

Nové jazykové brány do Caché. Daniel Kutáč

Úvod do Entity Frameworku

Vývoj multiplatformní aplikace v Qt

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Bc. Martin Majer, AiP Beroun s.r.o.

UJO Framework. revoluční architektura beans. verze

Silverlight. datové služby. John Papa

Uživatelská příručka T UC-One pro windows

Školící dokumentace administrátorů IS KRIZKOM (úroveň ÚSÚ) role ( administrátor )

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Jazyk C# (seminář 9)

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

TELEFONNí LiNKA PREMiUM PRŮVODCE NASTAVENíM SLuŽBY MEET-ME KONFERENCE

Rychlé nastavení mobilní aplikace Novell Vibe

VÝVOJ APLIKACE PRO PLATFORMU WINDOWS PHONE

Code Contracts. Robert Haken [MVP ASP.NET, MCT] Software architect, Owner at HAVIT, s.r.o. knowledge-base.havit.cz

Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13

Univerzita Karlova v Praze. Matematicko-fyzikální fakulta. Diplomová práce. Ondřej Kunc. Multiplatformní mobilní aplikace databázového systému Matylda

Administrace webu Postup při práci

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Obsah Úvodem... 5 Co je to vlastně formulář... 6 Co je to šablona... 6 Jak se šablona uloží... 6 Jak souvisí formulář se šablonou...

Multiplatformní vývoj v prostředí Xamarin Multiplatform Development with Xamarin

Vývoj aplikací pro Windows Phone 8. Mgr. David Gešvindr MCT MSP MCPD MCITP

KMI / TMA Tvorba mobilních aplikací. 9. seminář ZS 2016/2017 Středa 13:15-15:45

Rozklad na prvočinitele. 3. prosince 2010

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Semestrální práce [BIS-EXE] D2 Jan Nekvapil, Zdeněk Brabec

Služby Microsoft Office 365

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Základy programování (C#) Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1134_Základy programování (C#) _PWP

1. Podmínky chodu aplikace

Novinky. Autodesk Vault helpdesk.graitec.cz,

KIV/PIA 2012 Ing. Jan Tichava

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií BAKALÁŘSKÁ PRÁCE

Jak na Bakaláře z mobilního telefonu

Dělení a vlastnosti komponent

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ TECHNOLOGIE SILVERLIGHT DIPLOMOVÁ PRÁCE. VEDOUCÍ PRÁCE Ing. STANISLAV UCHYTIL, Ph. D.

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace

Nové vývojové nástroje i5/os Rational Developer for System i V7.1

Školící dokumentace administrátorů IS KRIZKOM (úroveň KRAJ) (role manager, administrátor )

VERZE 1.1.1, 1.1.2, 1.2 VIVO.LUNDEGAARD.EU

Programátorská příručka

NAS 232 Aplikace AiFoto pro mobilní zařízení. Správa fotografií na vašem NAS z mobilního zařízení

Vybraná zajímavá Lotus Notes řešení použitelná i ve vašich aplikacích. David Marko TCL DigiTrade

Windows Presentation Foundation & Data Binding

Důležité: Pokud jako Caption zadáme (tj. pomlčku), je položka menu změněna na oddělovač.

Sem vložte zadání Vaší práce.

Jazyk C# (seminář 7)

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Vývoj grafických aplikací s využitím WPF Jiří Boš

Komponenty v.net. Obsah přednášky

Práce se styly 1. Styl

ČÁST 1. Základy 32bitového programování ve Windows

Po prvním spuštění Chrome Vás prohlížeč vyzve, aby jste zadali své přihlašovací údaje do účtu Google. Proč to udělat? Máte několik výhod:

Transkript:

www.dotnetcollege.cz Vývoj mobilních aplikací pomocí frameworku Xamarin Roman Jašek Microsoft Most Valuable Professional Riganti s.r.o. roman.jasek@riganti.cz

Tradiční přístup k vývoji aplikací ios App Android App Windows App Objective-C Swift Xcode Java Kotlin Android Studio C# Visual Studio

Xamarin ios C# UI Android C# UI Windows C# UI Shared C# Backend Xamarin Společná logika pro všechny platformy UI psáno v C# Možnost využít vývoj podobný vývoji pro specifické platformy

Xamarin Android Celý vývoj je možný ve Visual Studiu Podpora pro.axml Integrovaný designer Kód psaný v C# Možnost debugovat na zařízení

Xamarin ios Je nutno mít někde Mac Vývoj probíhá ve Visual Studiu Mac na síti zbuildí a spustí aplikaci ios Simulátor běží na Macu, ale existuje Xamarin ios Simulator, který ho streamuje do Windows Možnost debugovat na zařízení

Platformy - old

Platformy - updated Oficiální podpora* Komunita *Tizen je podporován Samsungem

Xamarin + Xamarin.Forms ios C# UI Android C# UI Windows C# UI Shared UI Code Shared C# Backend Shared C# Backend Xamarin Xamarin.Forms

Xamarin Forms Shared UI Code Shared C# Backend Společná logika pro všechny platformy UI psáno v C# Možnost využít vývoj podobný vývoji pro specifické platformy Společné uživatelské rozhraní pro všechny platformy

Aktuální stav Shared UI Code Shared C# Backend 40+ stránek, layoutů, komponent (XAML) Data binding Navigace Animace...

XAML Formát pro serializaci hierarchie objektů Nejen pro popis uživatelského rozhraní Mapování.NET namespaces na XML namespaces Možné propojení s code-behind třídou

Kde všude XAML potkáme? Windows Presentation Foundation (WPF) Poprvé v.net 3.0 Silverlight Windows Phone Universal Windows Platform (UWP) Windows Workflow Foundation (WF) Neslouží pro popis UI Xamarin.Forms

XAML x:class třída s code-behindem UserControl z čeho tato třída dědí xmlns:x speciální namespace pro účely XAMLu (povinný) xmlns namespace s vestavěnými komponentami <?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="xamarincvut.forms.views.page1"> </ContentPage>

Stránky Content Page Jednoduchý obsah MasterDetail Page Seznam + detail položky

Stránky TabbedPage Záložky CarouselPage Stránky vedle sebe

Stránky NavigationPage Aby fungovala navigace

Stránky První, co se zobrazí, je v souboru App.cs Defaultně MainPage

Layouts jedna komponenta ContentView Jeden obsah, bázová třída Frame Možnost přidat rámeček

Layouts jedna komponenta ScrollView Pokud se nevejde, scrolluje se

Layouts více komponent AbsoluteLayout Absolutní pozicování komponent RelativeLayout Rozmístění pomocí constraintů

Layouts více komponent Grid Tabulkový layout StackLayout Pod sebe nebo vedle sebe

Layouts více komponent FlexLayout Obdoba webového Flexboxu

Grid Skoro stejné jako ve WPF RowDefinitions, ColumnDefinitions Width / Height = 150 3* Auto Grid.Row, Grid.Column, Grid.RowSpan ColumnSpacing, RowSpacing je potřeba nastavit

StackLayout Obdoba StackPanelu ve WPF Řadí komponenty pod sebe nebo vedle sebe Orientation = Horizontal Vertical Spacing rozestup jednotlivých komponent HorizontalOptions a VerticalOptions Start, Center, End a Fill AndExpand komponenta může dostat víc místa, než nutně potřebuje, pokud je to místo k dispozici

Prezentace obsahu

Akce

Nastavování hodnot

Editace textu

Indikace aktivity

Kolekce

Kolekce - Cells TextCell, ImageCell, SwitchCell, EntryCell ViewCell (dovnitř lze dát cokoliv) ViewCell.ContextActions kontextové menu ListView ItemsSource="{Binding: }" IsPullToRefreshEnabled = true false zavolá RefreshCommand HasUnevenRows = true false různé výšky řádků

Cells

ViewCell

Pop-ups

Komponenty třetích stran

Rozdíly názvy WPF StackPanel TextBox ListBox CheckBox ProgressBar Grid Label Button Image Date/TimePicker Xamarin Forms StackLayout Entry ListView Switch ActivityIndicator Grid Label Button Image Date/TimePicker

Rozdíly Data Binding Windows DataContext {Binding Property} ItemsSource ItemTemplate DataTemplate Xamarin.Forms BindingContext {Binding Property} ItemsSource ItemTemplate DataTemplate

Platformně specifické Možnost změnit hodnotu parametru pro konkrétní platformu přímo v XAMLu <Button.BorderWidth> <OnPlatform x:typearguments="system:double"> <On Platform="Android" Value="5"/> <On Platform="iOS, UWP" Value="10"/> </OnPlatform> </Button.BorderWidth>

Platformně specifické Custom Renderer Když něco nejde v XAML Ve Forms projektu vyrobit třídu public class BoxViewWithRadius : BoxView V Android/iOS projektu vyrobit Renderer [assembly: ExportRenderer(typeof(BoxViewWithRadius), typeof(boxviewwithradiusrenderer))] public class BoxViewWithRadiusRenderer : BoxRenderer V XAMLu použití třídy z Forms projektu Implementace pro každou platformu zvlášť

Platformně specifické Podpora pro ios a Android 100% podpora pro API při releasu Zápis velmi podobný Java/Swift, stejné názvy tříd atd. Z existujícího kódu na jinou platformu je možné jednoduše přepsat do Xamarinu Xamarin.Essentials multiplatformní přístup k těmto API

Data binding Mezi code-behind a XAML Mezi ViewModelem a View Text="{Binding Path=Operand1}" Mezi komponentami ve View Text="{Binding Source={x:Reference Name=DisplayAlertButton}, Path=Text}"

Směr bindingu Vlastnost Mode OneTime jen jednou na začátku OneWay jedním směrem ze zdroje do cíle TwoWay obousměrně změna v cíli změní i zdroj OneWayToSource jedním směrem od cíle k zdroji Zdroj vlastnost, na kterou bindujeme Cíl komponenta, která má {Binding}

Binding - Notifikace o změnách OneWay a TwoWay reaguje na změny zdroje zdroj o nich musí dát nějak vědět objekt implementuje INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged Je vhodné přidat metodu OnPropertyChanged s parametrem s atributem [CallerMemberName]

PropertyChanged.Fody Automatické doplnění volání PropertyChanged eventu Attributes: AlsoNotifyFor DependsOn

INotifyCollectionChanged ObservableCollection<T> implementuje toto rozhraní Vlastní kolekce podporu přidáme pomocí INotifyCollectionChanged Existující kolekce např. napsat kolem ní "wrapper"

Data Binding Intellisense xmlns:d=http://schemas.microsoft.com/expression/blend/2008 xmlns:mc=http://schemas.openxmlformats.org/markupcompatibility/2006 mc:ignorable="d" d:datacontext="{d:designinstance test:mainpageviewmodel} Může být problematické Možnost řešení pomocí Locator-u (ViewModelLocator) Využití BindingContext v XAMLu

MVVM Frameworky MVVM Cross Simple MVVM MVVM Light Catel ReactiveUI

Tip - načtení dat z webové služby Využití frameworku Swagger Vytvoření Web API v.net Vygenerování klientského kódu Přiložení kódu do projektu jako dll

Xamarin Forms 4 Novinky

Shell Nový způsob definice organizace stránek Nový přístup k navigaci pomocí URI Jedno místo na definici struktury aplikace Integrované vyhledávání

Shell Flyout Náhrada za MasterDetail page Vyjížděcí menu vlevo Možnost nastavit hlavičku Možnost přepsat vykreslování jednotlivých položek

Shell - Flyout

Shell - Flyout

Shell - Tabs Náhrada za Tabbed page Taby jsou ve spodní části Podpora pro text a ikonu

Shell - Tabs

Shell Více obsahů Víc stránek v jednom tabu Taby v horní části stránky Text, možnost upravit barvu

Shell Víc obsahů

CollectionView Nový způsob zobrazování kolekcí Flexibilnější a optimalizovanější než ListView Vertikální i horizontální orientace Není potřeba Cell Podpora pro Grid zobrazení Podpora pro prázdné zobrazení Je potřeba zapnout experimentální flag global::xamarin.forms.forms.setflags("collectionview_experimental");

Visual Opinionated design system Identicky vypadající UI pro Android a ios Možnost jednoduchého nastavení defaultního vzhledu Možnosti Material design Chystají se: Fluent, Fabric, Cupertino Vlastní Visual

Xamarin Forms 4 Novinky Menší změny ImageButton Maximální počet řádek v Label Fast Renderers...

Visual příklad Android

Visual příklad ios

Visual Nuget balíček Xamarin.Forms.Visual.Material Inicializace na úrovni platformy FormsMaterial.Init(); Nastavení v XAML: <ContentPage Visual="Material"> </ContentPage> Nastavení je hierarchické

Tipy

XAML Compilation XAML XAMLC Parsed & turned into IL Parsed and inflated

XAML Compilation Rychlejší načítání Menší velikost aplikací Chyby v XAML již při kompilaci

Font Awesome Přidat font do platformě specifického projektu Přidat do ResourceDictionary do App.xaml Možnost použít v textu Možnost použít jako obrázek pomocí FontImageSource Pro Tip vygenerovat třídu s názvy pro jednodušší použití: https://andreinitescu.github.io/iconfont2code/

Xamarin Essentials Hromada užitečných napojení Přímo od tvůrců Xamarinu Práce se soubory, SMS, gyroskopem, akcelerometrem

Xamarin + Swagger Klientský kód pro komunikaci s API Vygenerování z OpenAPI definice Není nutno řešit infrastrukturní kód pro komunikaci Pro C# generátor Autorest

XAML Hot Reload Možnost vidět změny v kódu přímo v běžící aplikaci Není potřeba žádné knihovny, stačí spustit v debug módu Funguje pro úpravy v XAML kódu Projeví se při uložení souboru Funguje v emulátoru, simulátoru i zařízení Aktuálně v Preview je možné se přihlásit

Výhody Xamarin Forms XAML.Net Dobrá dokumentace Sdílení kódu 85%+

Demo https://github.com/jasho/xconferenceapp

Pozvánka SQL Bootcamp 2019 20. 8. 21. 8. Brno 2 tracky Cca 24 přednášek Již se dá registrovat Hlasování o přednáškách již brzy

Pozvánka - WUG Days 2019 Víkend 14. 9. 15. 9. Brno 4 tracky Cca 48 přednášek Již se dá registrovat Hlasování o přednáškach již brzy