Slide 1

Slide 1 text

Xamarin Forms - From Duplo to Lego Runar Ovesen Hjerpbakk, Manager https://hjerpbakk.com @hjerpbakk Bekk NNUG 28.11.2019

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Agenda WTF, XAMARIN STATE OF XAMARIN FORMS ANNO 2019 ARCHITECTURE AND ADVICE XAMARIN FORMS IS AMAZING AND I'LL USE IT FOR MY NEXT PROJECT!

Slide 4

Slide 4 text

Which approach should you use? Full naDve! Webviews (hybrid app) Cross platform

Slide 5

Slide 5 text

Shared C# Business Logic • Platform APIs • User Interface Xamarin App Architecture Shared C# codebase • 100% native API access • High performance .NET C# C# C#

Slide 6

Slide 6 text

Native performance Xamarin.iOS does full Ahead Of Time (AOT) compilation to produce an ARM binary for Apple’s App Store. Xamarin.Android takes advantage of Just In Time (JIT) compilation on the Android device. ARM BINARY Runs natively .APP AOT .NE T C# Bindings .APK AOT & Compile and Link .NET C# Bindings IL + JIT Runs naDvely .NET C# Bindings

Slide 7

Slide 7 text

Xamarin.Forms: Cross-Platform Native UI .NET C# C# Shared C# Business Logic Xamarin.Essentials C# Xamarin.Forms - UI

Slide 8

Slide 8 text

Before release, we had internally called Xamarin.Forms "duplo," to emphasize that it was for childishly-simple apps and screens

Slide 9

Slide 9 text

The smartphone is all grown up

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Xamarin Forms 2019 ✓ 40+ Pages, layouts, and controls (Build from C# or XAML) ✓ Two-way data binding ✓ Navigation ✓ Visual State Manager ✓ Animation API ✓ Dependency Service ✓ Messaging Center Shared C# Business Logic .NET C# C# C# Xamarin.Essentials Xamarin.Forms - UI

Slide 13

Slide 13 text

Xamarin.Essentials aka.ms/xamarinessentials Flashlight Geolocation Preferences Device Info Device Display Info Secure Settings Accelerometer Battery Clipboard Compass Connectivity Data Transfer Email File System Geocoding Gyroscope Magnetometer Phone Dialer Screen Lock Sms Text to Speech Vibration

Slide 14

Slide 14 text

Concepts and patterns - MVVM ❤ - Hot Reload - Kompilert XAML - Kompilerte Bindings - Dependency Injection - Strongly typed navigation - Testing - Dev Ops flow - Collection View - Custom renderers - Behaviors - Theming - Custom controls - Secrets - Converters - Nullable Reference Types (C# 8) - Messages - Platform specific tweaks - Image fonts - Shell

Slide 15

Slide 15 text

MVVM

Slide 16

Slide 16 text

Code

Slide 17

Slide 17 text

Concepts and patterns redux - MVVM ❤ - Hot Reload ⭐ - Kompilert XAML ⭐ - Kompilerte Bindings ⭐ - Dependency Injection ⭐ - Strongly typed navigation ⭐ - Testing ⭐ - Dev Ops flow ⭐ - Collection View - Custom renderers - Behaviors - Theming - Custom controls - Secrets - Converters - Nullable Reference Types (C# 8) - Messages - Platform specific tweaks - Image fonts - Shell (for now)

Slide 18

Slide 18 text

You’ve learned that ... … App Center is fully integrated with Xamarin and trivializes the setup of a fully automated release pipeline … C# 8 is an awesome programming language and the Visual Studio family of tools are pleasant to work with … XAML, ViewModels and MVVM are easy to work with and makes end to end tesDng a breeze … Xamarin Forms makes it fun to create any app sharing a GREAT deal of code between the plaborms!

Slide 19

Slide 19 text

Thriving community Read / Watch / Hear - hjerpbakk.com - Planet Xamarin blog - Xamarin Developers - YouTube - Merge Conflict Podcast - Gone Mobile Podcast - Microsoft's documentation - Xamarin Inspector - Xamarin on GitHub - source and SAMPLES - App Center - Xamarin Essentials - Polly - DIPS.Xamarin.UI - NotifyPropertyChanged.Verifier - Xamarin Profiler Try and use

Slide 20

Slide 20 text

Thank you