SlideShare a Scribd company logo
James Montemagno
Program Manager
Microsoft
Intermediate
T02
Stunning Mobile Apps with the
Xamarin Visual Design System
.NET
What is Xamarin?
An open source app platform
from Microsoft for
building modern & performant
iOS, Android, macOS,
watchOS, & tvOS apps with .NET.
aka.ms/xamarin-showcase
Shared C#
Business Logic • Platform APIs • User Interface
Xamarin App Architecture
Shared C# codebase • 100% native API access • High performance
.NET
C# C# C#
Xamarin App Architecture
Shared C#
Business Logic • Platform APIs • User Interface
.NET
C# C# C#
Stunning Mobile Apps with the Xamarin Visual Design System​
Xamarin.Essentials
aka.ms/xamarinessentials
Flashlight
Geolocation
Preferences
Device Info
Device Display Info
Secure Settings
Accelerometer
Battery
Clipboard
Compass
Connectivity
Data Transfer
Email
File SystemGeocoding
Gyroscope
Magnetometer
Phone Dialer
Screen Lock
Sms
Text to Speech
Vibration
Xamarin.Essentials: Cross-Platform Native APIs
Shared C#
Business Logic • User Interface
.NET
C# C# C#
Xamarin.Essentials
Stunning Mobile Apps with the Xamarin Visual Design System​
Stunning Mobile Apps with the Xamarin Visual Design System​
Xamarin.Forms: Cross-Platform Native UI
.NET
C# C#
Shared C#
Business Logic
Xamarin.Essentials
C#
Xamarin.Forms - UI
Stunning Mobile Apps with the Xamarin Visual Design System​
• 480x320 display at 163ppi
• 128 Mb RAM
• 32 bit ARM at 412Mhz
• GeekScore ~120
• 2 megapixel camera
• PowerVR GPU at 150Mhz
iPhone 3G iPhone XS
Stunning Mobile Apps with the Xamarin Visual Design System​
Today
Today
Google Says Apple Says
Google Says Apple Says
Google Says Apple Says
And So It Begins…
Google Says Apple Says
Stunning Mobile Apps with the Xamarin Visual Design System​
Exaclty the
Same
34%
Mostly the
Same
56%
Distinct
10%
Controls
Effects Behaviors
PlatformSpecifics
Custom Controls
Custom Renderers
Skia
Third Party
Controls
???????
Styles OnPlatform
Enter Visual
Stunning Mobile Apps with the Xamarin Visual Design System​
Material Visual
Visual="Material"
Stunning Mobile Apps with the Xamarin Visual Design System​
Stunning Mobile Apps with the Xamarin Visual Design System​
Visual
• Sets of renderers
• Adhering to a specific design system
• Beginning with Material Design
• ActivityIndicator
• Button
• Editor
• Entry
• Frame
• Picker
• ProgressBar
• Slider
• Stepper
Visual – The Renderer Process
Forms.Init
Registers Button
renderers by type
and visual marker
new
ContentPage()
App parses UI
graph which asks
for a Button
Looks up
renderer by
type & visual
Fallback is default
renderer
Creates
detached
instance
Populates
properties
Attaches
to visual
tree
Why Consistency Matters
Stunning Mobile Apps with the Xamarin Visual Design System​
Stunning Mobile Apps with the Xamarin Visual Design System​
Stunning Mobile Apps with the Xamarin Visual Design System​
“By supporting one UI we can move faster than our
competition.”
“By supporting one UI we can move faster than our
competition.”
“Our company supports many apps, so sharing more
code means less burden of support.”
“By supporting one UI we can move faster than our
competition.”
“Our company supports many apps, so sharing more
code means less burden of support.”
“To get approved by the regulatory body (FDA).”
Stunning Mobile Apps with the Xamarin Visual Design System​
Stunning Mobile Apps with the Xamarin Visual Design System​
Stunning Mobile Apps with the Xamarin Visual Design System​
A design system is a series of
components that can be reused in
different combinations. Design
systems allow you to manage
design at scale.
https://www.forumone.com/ideas/what-is-design-system/
Material Design
• Material is a
Designers wishing to give their suite
of products a unique but
consistent look and feel define a
design language for it, which can
describe choices for design aspects
such as materials, colour schemes,
shapes, patterns, textures, or
layouts.
https://en.wikipedia.org/wiki/Design_language
Material Design
• Material is a
Designers wishing to give their suite
of products a unique but
consistent look and feel define a
design language for it, which can
describe choices for design aspects
such as materials, colour schemes,
shapes, patterns, textures, or
layouts.
https://en.wikipedia.org/wiki/Design_language
Material Design
• Material is a
Material Design
• Material is a
Material Design
• Material is a
Material Design
• Material is a
Material Design
• Material is a
Material Design
 Material is a
Material Design
• Material is a
Material Design
• Material is a
Material Design
• Material is a
Material Design
• Material is a
Material Design
• Material is a
Material Design
• Material is a
Material Design
• Material is a
Bring Your Design System
Material Visual
[assembly: ExportRenderer(typeof(Xamarin.Forms.Button),
typeof(MaterialButtonRenderer),
new[] { typeof(VisualMarker.MaterialVisual) })
]
namespace Xamarin.Forms.Material.Android
{
public class MaterialButtonRenderer : MButton, ...
{
Material Visual
[assembly: ExportRenderer(typeof(Xamarin.Forms.Button),
typeof(MaterialButtonRenderer),
new[] { typeof(VisualMarker.MaterialVisual) })
]
namespace Xamarin.Forms.Material.Android
{
public class MaterialButtonRenderer : MButton, ...
{
Material Visual
[assembly: ExportRenderer(typeof(Xamarin.Forms.Button),
typeof(Xamarin.Forms.Material.iOS.MaterialButtonRenderer),
new[] { typeof(VisualMarker.MaterialVisual) })
]
namespace Xamarin.Forms.Material.iOS
{
public class MaterialButtonRenderer :
ViewRenderer<Button, MButton>, ...
Material Visual
[assembly: ExportRenderer(typeof(Xamarin.Forms.Button),
typeof(Xamarin.Forms.Material.iOS.MaterialButtonRenderer),
new[] { typeof(VisualMarker.MaterialVisual) })
]
namespace Xamarin.Forms.Material.iOS
{
public class MaterialButtonRenderer :
ViewRenderer<Button, MButton>, ...
Material Visual
namespace Xamarin.Forms
{
public static class FormsMaterial
{
public static void Init(Context context, Bundle bundle)
{
// my only purpose is to exist so when called
// this dll doesn't get removed
VisualMarker.RegisterMaterial();
}
}
}
Stunning Mobile Apps with the Xamarin Visual Design System​
Stunning Mobile Apps with the Xamarin Visual Design System​
Stunning Mobile Apps with the Xamarin Visual Design System​
Original - Coinbase
Original - Quantas
Before Visual After Visual
Stunning Mobile Apps with the Xamarin Visual Design System​
Dribble - Mockup
https://www.thewissen.io/travel-broadens-the-mind/
Consistent Navigation &
App Structure
Stunning Mobile Apps with the Xamarin Visual Design System​
Flyout Made Simple
<FlyoutItem Title="Browse" Icon="tab_feed.png">
<ShellContent ContentTemplate="{DataTemplate local:ItemsPage}" />
</FlyoutItem>
<FlyoutItem Title="About" Icon="tab_about.png">
<ShellContent ContentTemplate="{DataTemplate local:AboutPage}" />
</FlyoutItem>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:views="clr-namespace:App6.Views"
x:Class="App6.Views.MainPage">
<MasterDetailPage.Master>
<views:MenuPage />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<NavigationPage.Icon>
<OnPlatform x:TypeArguments="FileImageSource">
<On Platform="iOS" Value="tab_feed.png"/>
</OnPlatform>
</NavigationPage.Icon>
<x:Arguments>
<views:ItemsPage />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
</MasterDetailPage>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006
mc:Ignorable="d"
x:Class="App6.Views.MenuPage"
Title="Menu">
<StackLayout VerticalOptions="FillAndExpand">
<ListView x:Name="ListViewMenu"
HasUnevenRows="True">
<d:ListView.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>Item 1</x:String>
<x:String>Item 2</x:String>
</x:Array>
</d:ListView.ItemsSource>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="10">
<Label Text="{Binding Title}" d:Text="{Binding .}"
FontSize="20"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>
menuItems = new List<HomeMenuItem>
{
new HomeMenuItem {Id = MenuItemType.Browse, Title="Browse" },
new HomeMenuItem {Id = MenuItemType.About, Title="About" }
};
ListViewMenu.ItemsSource = menuItems;
ListViewMenu.SelectedItem = menuItems[0];
ListViewMenu.ItemSelected += async (sender, e) =>
{
if (e.SelectedItem == null)
return;
var id = (int)((HomeMenuItem)e.SelectedItem).Id;
await RootPage.NavigateFromMenu(id);
};
public partial class MainPage : MasterDetailPage
{
Dictionary<int, NavigationPage> MenuPages = new Dictionary<int, NavigationPage>();
public MainPage()
{
InitializeComponent();
MasterBehavior = MasterBehavior.Popover;
MenuPages.Add((int)MenuItemType.Browse, (NavigationPage)Detail);
}
public async Task NavigateFromMenu(int id)
{
if (!MenuPages.ContainsKey(id))
{
switch (id)
{
case (int)MenuItemType.Browse:
MenuPages.Add(id, new NavigationPage(new ItemsPage()));
break;
case (int)MenuItemType.About:
MenuPages.Add(id, new NavigationPage(new AboutPage()));
break;
}
}
var newPage = MenuPages[id];
if (newPage != null && Detail != newPage)
{
Detail = newPage;
if (Device.RuntimePlatform == Device.Android)
await Task.Delay(100);
IsPresented = false;
}
}
}
Scenarios
1 Page Bottom Tabs Bottom & Top Tabs FlyoutTop Tabs
Stunning Mobile Apps with the Xamarin Visual Design System​
Thank you.
James
Montemagno
Principal Program Manager – Mobile Developer Tools,
Microsoft
motz@microsoft.com Montemagno.com @JamesMontemagno
Weekly development podcast
mergeconflict.fm
Weekly development show
xamarinshow.com

More Related Content

What's hot (20)

PDF
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
James Montemagno
 
PDF
Xamarin microsoft graph
Nicolò Carandini
 
PDF
Connected Mobile Apps with Microsoft Azure
Xamarin
 
PPTX
Highlights from the Xamarin Evolve 2016 conference
Christopher Miller
 
PDF
Xamarin.Forms
Nicolò Carandini
 
PDF
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
Xamarin
 
PDF
Azure mobile services
Nicolò Carandini
 
PDF
Introduction to xamarin
Nicolò Carandini
 
PDF
Introduction to CocosSharp
James Montemagno
 
PDF
End to-end native iOS, Android and Windows apps wtih Xamarin
James Montemagno
 
PDF
Xamarin DevOps
Nicolò Carandini
 
PDF
Xamarin Dev Days - Introduction to Xamarin.Forms, Insights, Test Cloud
James Montemagno
 
PDF
Intro to Xamarin.Forms for Visual Studio 2017
Xamarin
 
PDF
Evovle 2016 - Everyone Can Create Beautiful Apps with Material Design
James Montemagno
 
PDF
Xamarin: The Future of App Development
James Montemagno
 
PDF
Native iOS and Android Development with Xamarin
James Montemagno
 
PPTX
Build 2017 - B8099 - What's new in Xamarin.Forms
Windows Developer
 
PDF
UI Animations in Meteor
Nick Wientge
 
PDF
Azure App Service Helpers
James Montemagno
 
PDF
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin
 
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
James Montemagno
 
Xamarin microsoft graph
Nicolò Carandini
 
Connected Mobile Apps with Microsoft Azure
Xamarin
 
Highlights from the Xamarin Evolve 2016 conference
Christopher Miller
 
Xamarin.Forms
Nicolò Carandini
 
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
Xamarin
 
Azure mobile services
Nicolò Carandini
 
Introduction to xamarin
Nicolò Carandini
 
Introduction to CocosSharp
James Montemagno
 
End to-end native iOS, Android and Windows apps wtih Xamarin
James Montemagno
 
Xamarin DevOps
Nicolò Carandini
 
Xamarin Dev Days - Introduction to Xamarin.Forms, Insights, Test Cloud
James Montemagno
 
Intro to Xamarin.Forms for Visual Studio 2017
Xamarin
 
Evovle 2016 - Everyone Can Create Beautiful Apps with Material Design
James Montemagno
 
Xamarin: The Future of App Development
James Montemagno
 
Native iOS and Android Development with Xamarin
James Montemagno
 
Build 2017 - B8099 - What's new in Xamarin.Forms
Windows Developer
 
UI Animations in Meteor
Nick Wientge
 
Azure App Service Helpers
James Montemagno
 
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin
 

Similar to Stunning Mobile Apps with the Xamarin Visual Design System​ (20)

PDF
Introduction to Xamarin.Forms
James Montemagno
 
PPT
Developing Cross-platform Native Apps with Xamarin
danhermes
 
PPTX
Xamarin Platform
Liddle Fang
 
PPTX
Cross-Platform Mobile Development using Visual Studio and Xamarin
Shravan Kumar Kasagoni
 
PDF
Deep Dive in Xamarin.Forms
James Montemagno
 
PPTX
Mobile next 2013 petru jucovschi
mpgco
 
PDF
Powering your Apps with Cloud Services
Xpand IT
 
PDF
Native i os, android, and windows development in c# with xamarin 4
Xamarin
 
PPTX
Introduction to Xamarin
Vinicius Quaiato
 
PDF
How To Hire A Team To Develop WebRTC Based Applications_.pdf
Moon Technolabs Pvt. Ltd.
 
PDF
What's New, Hot, & Awesome for Xamarin Developers!
James Montemagno
 
PPTX
Xamarin Roadshow
Sam Basu
 
PDF
Xamarin y MS Azure | Cognitive Services
Vicente Gerardo Guzman Lucio
 
PPTX
Introduction to Cross Platform Mobile Apps (Xamarin)
BizTalk360
 
PDF
The Great Mobile Debate: Native vs. Hybrid App Development
Nick Landry
 
DOCX
How DotNet, SharePoint, and Azure helps to build a Custom Web Application wi...
Aimore Technologies
 
PDF
Xamarin Platform
Rui Marinho
 
PPTX
Xamarin overview droidcon.tn
Houssem Dellai
 
PPTX
AppSheet Overview -- DIY Mobile App Platform
pravse
 
PPTX
Android with cloud
Ashish RAj
 
Introduction to Xamarin.Forms
James Montemagno
 
Developing Cross-platform Native Apps with Xamarin
danhermes
 
Xamarin Platform
Liddle Fang
 
Cross-Platform Mobile Development using Visual Studio and Xamarin
Shravan Kumar Kasagoni
 
Deep Dive in Xamarin.Forms
James Montemagno
 
Mobile next 2013 petru jucovschi
mpgco
 
Powering your Apps with Cloud Services
Xpand IT
 
Native i os, android, and windows development in c# with xamarin 4
Xamarin
 
Introduction to Xamarin
Vinicius Quaiato
 
How To Hire A Team To Develop WebRTC Based Applications_.pdf
Moon Technolabs Pvt. Ltd.
 
What's New, Hot, & Awesome for Xamarin Developers!
James Montemagno
 
Xamarin Roadshow
Sam Basu
 
Xamarin y MS Azure | Cognitive Services
Vicente Gerardo Guzman Lucio
 
Introduction to Cross Platform Mobile Apps (Xamarin)
BizTalk360
 
The Great Mobile Debate: Native vs. Hybrid App Development
Nick Landry
 
How DotNet, SharePoint, and Azure helps to build a Custom Web Application wi...
Aimore Technologies
 
Xamarin Platform
Rui Marinho
 
Xamarin overview droidcon.tn
Houssem Dellai
 
AppSheet Overview -- DIY Mobile App Platform
pravse
 
Android with cloud
Ashish RAj
 
Ad

More from James Montemagno (17)

PPTX
Building Stream Deck Plugins in C#
James Montemagno
 
PDF
Xamarin.forms Shell + Navigation
James Montemagno
 
PPTX
Seattle Mobile .NET User Group - Nov. 13th 2019
James Montemagno
 
PDF
Expert Day - What's New, Hot, & Awesome for Xamarin Devs
James Montemagno
 
PDF
Xamarin - New & Awesome + Building Xamarin.Essentials
James Montemagno
 
PDF
Zebra App Forum 2019 - Building iOS & Android Apps with Xamarin
James Montemagno
 
PDF
What's New in Xamarin? - Santo Domingo
James Montemagno
 
PDF
Optimizing and Extending Xamarin.Forms iOS, Android, and UWP Apps
James Montemagno
 
PDF
.NET Everywhere and for Everyone
James Montemagno
 
PDF
MS Experiences 17 - Xamarin: Future of Mobile Development
James Montemagno
 
PDF
AnDevCon - Android and iOS Apps in C# with Xamarin
James Montemagno
 
PDF
Xcoders - iOS & Android Development in C# with Xamarin
James Montemagno
 
PDF
Visual Studio 2017 Launch Event
James Montemagno
 
PPTX
.Net Standard Libraries and Xamarin
James Montemagno
 
PDF
What's new in Xamarin.Forms?
James Montemagno
 
PDF
Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
James Montemagno
 
PDF
Don't let your mobile app get lost - iOS Spotlight and App Indexing
James Montemagno
 
Building Stream Deck Plugins in C#
James Montemagno
 
Xamarin.forms Shell + Navigation
James Montemagno
 
Seattle Mobile .NET User Group - Nov. 13th 2019
James Montemagno
 
Expert Day - What's New, Hot, & Awesome for Xamarin Devs
James Montemagno
 
Xamarin - New & Awesome + Building Xamarin.Essentials
James Montemagno
 
Zebra App Forum 2019 - Building iOS & Android Apps with Xamarin
James Montemagno
 
What's New in Xamarin? - Santo Domingo
James Montemagno
 
Optimizing and Extending Xamarin.Forms iOS, Android, and UWP Apps
James Montemagno
 
.NET Everywhere and for Everyone
James Montemagno
 
MS Experiences 17 - Xamarin: Future of Mobile Development
James Montemagno
 
AnDevCon - Android and iOS Apps in C# with Xamarin
James Montemagno
 
Xcoders - iOS & Android Development in C# with Xamarin
James Montemagno
 
Visual Studio 2017 Launch Event
James Montemagno
 
.Net Standard Libraries and Xamarin
James Montemagno
 
What's new in Xamarin.Forms?
James Montemagno
 
Xamarin Evolve 2016: Mobile search - making your mobile apps stand out
James Montemagno
 
Don't let your mobile app get lost - iOS Spotlight and App Indexing
James Montemagno
 
Ad

Recently uploaded (20)

PDF
Book.pdf01_Intro.ppt algorithm for preperation stu used
archu26
 
PDF
POWER PLANT ENGINEERING (R17A0326).pdf..
haneefachosa123
 
PDF
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
PDF
Ethics and Trustworthy AI in Healthcare – Governing Sensitive Data, Profiling...
AlqualsaDIResearchGr
 
PPTX
Innowell Capability B0425 - Commercial Buildings.pptx
regobertroza
 
PPTX
Day2 B2 Best.pptx
helenjenefa1
 
PPTX
REINFORCEMENT AS CONSTRUCTION MATERIALS.pptx
mohaiminulhaquesami
 
DOCX
8th International Conference on Electrical Engineering (ELEN 2025)
elelijjournal653
 
PPTX
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
PPTX
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
PPTX
site survey architecture student B.arch.
sri02032006
 
PPTX
Solar Thermal Energy System Seminar.pptx
Gpc Purapuza
 
PDF
Unified_Cloud_Comm_Presentation anil singh ppt
anilsingh298751
 
PDF
Water Design_Manual_2005. KENYA FOR WASTER SUPPLY AND SEWERAGE
DancanNgutuku
 
PDF
GTU Civil Engineering All Semester Syllabus.pdf
Vimal Bhojani
 
PDF
UNIT-4-FEEDBACK AMPLIFIERS AND OSCILLATORS (1).pdf
Sridhar191373
 
PPTX
Heart Bleed Bug - A case study (Course: Cryptography and Network Security)
Adri Jovin
 
PPTX
Destructive Tests corrosion engineer (1).pptx
zeidali3
 
PPTX
Introduction to Design of Machine Elements
PradeepKumarS27
 
PDF
monopile foundation seminar topic for civil engineering students
Ahina5
 
Book.pdf01_Intro.ppt algorithm for preperation stu used
archu26
 
POWER PLANT ENGINEERING (R17A0326).pdf..
haneefachosa123
 
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
Ethics and Trustworthy AI in Healthcare – Governing Sensitive Data, Profiling...
AlqualsaDIResearchGr
 
Innowell Capability B0425 - Commercial Buildings.pptx
regobertroza
 
Day2 B2 Best.pptx
helenjenefa1
 
REINFORCEMENT AS CONSTRUCTION MATERIALS.pptx
mohaiminulhaquesami
 
8th International Conference on Electrical Engineering (ELEN 2025)
elelijjournal653
 
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
site survey architecture student B.arch.
sri02032006
 
Solar Thermal Energy System Seminar.pptx
Gpc Purapuza
 
Unified_Cloud_Comm_Presentation anil singh ppt
anilsingh298751
 
Water Design_Manual_2005. KENYA FOR WASTER SUPPLY AND SEWERAGE
DancanNgutuku
 
GTU Civil Engineering All Semester Syllabus.pdf
Vimal Bhojani
 
UNIT-4-FEEDBACK AMPLIFIERS AND OSCILLATORS (1).pdf
Sridhar191373
 
Heart Bleed Bug - A case study (Course: Cryptography and Network Security)
Adri Jovin
 
Destructive Tests corrosion engineer (1).pptx
zeidali3
 
Introduction to Design of Machine Elements
PradeepKumarS27
 
monopile foundation seminar topic for civil engineering students
Ahina5
 

Stunning Mobile Apps with the Xamarin Visual Design System​

Editor's Notes

  • #3: As developers we need to be able to reach every platform on the planet. And that is the goal of .NET enabling developers to build for these devices with unique frameworks optimized for each. Today, we will look at what the Xamarin platform and framework, which are part of .NET offer.
  • #4: So, let’s start with exactly what Xamarin is.
  • #6: In fact there are tons of companies that entrust Xamarin and .NET today. These companies leverage Xamarin and .NET across all verticals and all different types of platforms.
  • #7: First, it is with it’s unique application architecture. In fact it is the .NET architecture itself. You decided what platforms you want your apps to run on, we call them head projects. You can access all of the native APIs for each and share a bulk of the C# logic. Here we see business logic, platform APIs, and user interfaces. This can scale to a lot or a little based on what you are trying to achieve. So how exactly does this work?
  • #8: First is the core architecture which enables huge amount of code sharing across apps. You can build stunning applications with high fidelity. Let’s talk about what is in each of these blocks, first with the head projects, platform APIs, and user interface. The business logic is just .NET code that can always be shared with other .NET platforms.
  • #9: The first part in the head projects is access to any of the unique APIs in iOS and Android. You have access to them all in C#. Now, these do have to be written in the head project and aren’t shared since they are unique to each platform. However, the Xamarin team has a way to help us out there.
  • #10: Which is Xamarin.Essentials. An open source library that abstracts common native features into a single cross platform API for iOS, Android, and Windows. These are APIs that exist across each platform so why not bring them together.
  • #11: So now, if we look a bit further, this is what our app architecture looks like.
  • #12: What about the user interface? Just like APIs you can build the native UI for each platform. However, many developers choose to share all or most of the UI with Xamarin.Forms
  • #13: Miguel
  • #14: We will look more at Xamarin.Forms, but now we can see a full picture of what goes into our app.
  • #15: Miguel
  • #16: Miguel
  • #17: Miguel
  • #18: http://www.jackrabbitmobile.com/wp-content/uploads/2014/12/ios_vs_android.pdf
  • #29: What Material provides, how it works What’s next for Material Properties for styling What additional controls are needed/desired
  • #30: What Visual is by itself
  • #33: ## Objects 1. Forms VisualElement 2. Platform Renderer ## How a Button makes it to the screen: 1. Forms.Init - registers Button renderers by type (Button) and visual (Default|Material) 2. App parses UI graph, get's ContentPage with a Button 3. Looks up renderer by type & visual 4. Creates detached renderer instance 5. Populates properties 6. Attaches to visual tree Where does measuring and layout happen? In the above? When does the below happen, before or after the UI is attached to the visual tree? ## Invalidation 1. InvalidateMeasure Called 2. Call InvalidateMeasure on Parent 3. Has Parent? a. Yes Return to 2. b. No. Continue. 4. Queue Delay layout ## Layout 5. Event callback triggers layout (What event?) 6. Layout Called 7. LayoutChildren Invoked 8. Has Children? a. Yes. Return to 6. b. No. Continue. 9. Layout Cycle Completed
  • #60: What Material provides, how it works What’s next for Material Properties for styling What additional controls are needed/desired
  • #61: What Material provides, how it works What’s next for Material Properties for styling What additional controls are needed/desired
  • #62: What Material provides, how it works What’s next for Material Properties for styling What additional controls are needed/desired
  • #63: What Material provides, how it works What’s next for Material Properties for styling What additional controls are needed/desired
  • #64: In each platform project to ensure the dll isn’t linked out.
  • #68: Miguel
  • #69: James
  • #70: James
  • #71: James
  • #72: If 15 minutes left James does demo James
  • #74: Miguel ->James