extending, optimizing, and accelerating xamarin and xamarin.forms app development
TRANSCRIPT
Who’s this guy?
James Montemagno
Developer Evangelist
[email protected] http://motz.codes @JamesMontemagno
Xamarin—A Complete Mobile Solution
Design Develop Integrate
Learn
Xamarin Platform
Test Monitor
Plugins for Xamarin
Xamarin + Xamarin.Forms
With Xamarin.Forms: !more code-sharing, native controls!
Traditional Xamarin approach!
Xamarin.Forms!
Platform Specific Code
UI UI UIGPS, Text To
Speech, Settings, Battery,
Lights, Notifications,
etc…
GPS, Text To Speech,
Settings, Battery, Lights,
Notifications, etc…
GPS, Text To Speech,
Settings, Battery, Lights,
Notifications, etc…
§ What if we didn’t have to write this code?
§ What if we could access it from shared code?
Plugins for Xamarin
§ Access Platform Specific APIs from a Common API
§ From Anywhere:§ Single Project§ PCL§ Shared Code
§ github.com/xamarin/plugins
Productivity Templates
Xamarin.Android Templates Pack -‐ AppCompat
Xamarin.Android Templates Pack -‐ NavDrawer
Xamarin.Android Templates Pack -‐ Menu
Xamarin.Android Templates Pack -‐ Adapters
Tips & Tricks Android
USE THESE
• Xamarin Android Player – https://xamarin.com/android-‐player
• Material Palette – http://www.materialpalette.com/
• Android Asset Studio – http://romannurik.github.io/AndroidAssetStudio/
• The Android Source Code! – https://github.com/android/platform_frameworks_base
Tips & Tricks iOS with Mike James
Productivity Tools in Xamarin.Forms
Messaging Center!
§ MessagingCenter.Subscribe<T>(object subscriber, string message, Action<T> callback);!
§ MessagingCenter.Send(T item, string message);!
!!
Messaging Center -‐ Subscribe
Messaging Center -‐ Send
Dependency Services – Built in Service Container
• Access Native Features Easily
Dependency Service -‐ Implementation
Dependency Service – Register & Access
Extensibility
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/
Extensibility
Extensibility
Extensibility
Extensibility
Extensibility
Circle Image in Action
http://blog.xamarin.com/extending-xamarin.forms-with-control-plugins/
What’s new in Xamarin.Forms
Pull To Refresh!
The API
ViewModel Code
The XAML!
Styles
• Now you can group into a Style and share!
• Can also be added to App-‐level ResourceDictionary
Styles
• DynamicResource behave like data-‐binding, and support Apple’s Dynamic Type (﴾size)﴿ rendering
• Triggers & Behaviors can be added to styles
Triggers
• Visual Elements can react to events and property changes
• “conditional style” -‐ CP
• Can be added in C# • Types:
§ Trigger § EventTrigger § DataTrigger § MultiTrigger
OR
OR
Triggers
• The EventTrigger has Event instead of Property
• TriggerAction is written in C#
• Remember xmlns:
Triggers
• DataTriggers can bind to other controls (﴾Binding instead of Property)﴿
Behaviors
• Add functionality to visual elements without subclassing
Behaviors
• Add functionality to visual elements without subclassing
• Can participate in data-‐binding
Basic Navigation!
§ Root Page:!§ NavigationPage – Gives each page an INavigation !
!§ Standard Navigation!§ Navigation.PushAsync(page: nextPage);!§ Navigation.PopAsync();!
§ Modal Navigation!§ Navigation.PushModalAsync(page: modalPage);!§ Navigation.PopModalAsync();!!!
PushAsync/PopAsync
Advanced Navigation!
§ Editing of stack beyond push/pop!§ Remove Page!§ InsertPageBefore!§ NavigationStack[]!
§ Disable animations!!!
InsertPageBefore
RemovePage Push/Pop
James’ Top Recommendation
Use Xamarin.Insights! It’s Free and Amazing!
• Real-‐time Monitoring for your Apps
• iOS, Android, Mac, and Windows
• Xamarin.com/Insights
• Automatically report any uncaught managed or native exception.
• Report your own caught exceptions with simple cross-‐platform API
Report
• Track any event that occurs in your application.
• Even track performance of how long an operation takes.
Track
• Combine event tracking with user identification to resolve issues faster.
Identify
• Simple integrations into popular services for mission critical notifications.
Integrate
Links & References
• Plugins for Xamarin – http://www.github.com/xamarin/plugins
• Plugins for Xamarin Templates – https://visualstudiogallery.msdn.microsoft.com/
afead421-‐3fbf-‐489a-‐a4e8-‐4a244ecdbb1e • Xamarin.Android Templates
– https://visualstudiogallery.msdn.microsoft.com/bee6442f-‐8f5a-‐4bba-‐8849-‐e380b61e76b0
• Paint Code – http://www.paintcodeapp.com/
• Slides: www.slideshare.net/jamesmontemagno
Get Started Xamarin.com
Thank you! Q&A
James Montemagno
Developer Evangelist
[email protected] http://motz.codes @JamesMontemagno