+ All Categories
Home > Documents > Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin...

Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin...

Date post: 11-Feb-2018
Category:
Upload: ngokiet
View: 222 times
Download: 1 times
Share this document with a friend
54
Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder of Lexicon Systems [email protected] www.mobilecsharpcafe.com @danhermes for Your Florida Xamarin User Group
Transcript
Page 1: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Xamarin Navigation Patterns

Dan Hermesdeveloper, author, consultant,

founder of Lexicon Systems

[email protected]

www.mobilecsharpcafe.com

@danhermes

for Your Florida Xamarin User Group

Page 2: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

About me

• Software consultant since 1999• Code, write, and lead teams • Minecraft, tiki cocktails, my parrot, and digital art• I love Xamarin

Page 3: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Xamarin Book

Now Available on Amazon

“This weighty book gives clear guidance that will help you

build quality apps, starting with architectural considerations,

and then jumping into practical code strategies.” - Bryan Costanich, Vice President, Xamarin

“Dan Hermes’ extraordinary book is the most intelligent work

on cross-platform mobile development I’ve seen.”

– Jesse Liberty, Director of New Technology Development, Falafel Software,

Xamarin Certified Developer / Xamarin MVP

Page 4: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

• Founded in 1999

• Develop web and mobile apps

• Microsoft technology stack

We build apps for business

Page 5: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Our Clients Include

Page 6: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

What is Navigation?

• More than menus

• Nav controls are a means to an end

Page 7: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

What is Navigation?

Gets our user from place to place

Page 8: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

What is Navigation?

Provides the UI skeleton of our entire app

Page 9: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

What is Navigation?

• Gives users what they need to get around an app quickly, moving from screen to screen with confidence and ease

• This may include menus, tappable icons, buttons, tabs, and list items, as well as many types of gesture-sensitive screens to display data, information, and options to the user

Page 10: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Navigation Patterns

•Hierarchical

•Modal

•Drill-down list

•Navigation drawer

•Tabs

•Springboard

•Carousel

Page 11: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Hierarchical

Modal

Page 12: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Drill-down List

Page 13: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Navigation Drawer

Page 14: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Tabs

Page 15: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Springboard

Page 16: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Carousel

Page 17: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Xamarin.Forms Navigation

Navigation Pattern Xamarin.Forms Class

Hierarchical NavigationPage

Modal NavigationPage, alerts, and ActionSheets

Drill-down lists NavigationPage, ListView, and TableView

Navigation drawer MasterDetailPage

Tabs TabbedPage

Springboard images with gesture recognizers

Carousel CarouselPage

Page 18: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Most Common Navigation Patterns

• Hierarchical

• Modal

Page 19: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Hierarchical

• stack-based pattern

• allows users to move down into a stack of screens

• pop back out again, one screen at a time

• drill-down or breadcrumb

Page 20: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Hierarchical: Up and Back Buttons

Up

Back

Up

Page 21: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Hierarchical Navigation using NavigationPage

• Instantiate a NavigationPage and pass in a ContentPage

• In the child page:

• Set Title and Icon Properties

• Navigation.PushAsync (new MyPage)

• Navigation.PopAsync();

Page 22: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

NavigationPage

public class App : Application {

{

public App()

{

MainPage = new NavigationPage(new HomePage());

}

}

Page 23: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

NavigationPage

• Demo: HomePage

Page 24: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

NavigationPage:Remove and Insert

• Navigation.RemovePage(page);

• Navigation.InsertPageBefore(insertPage, beforePage);

Page 25: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Back Button

public override void OnBackButtonPressed()

{

// your code here

base.OnBackButtonPressed ();

}

Page 26: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Modal

Page 27: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Modal Types

1. Box: floats on top of the main page and is usually an alert, dialog box, or menu that the user can respond to or cancel

2. Screen: replaces the main page entirely, interrupting the hierarchical navigation stack

Page 28: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Modals in Xamarin.Forms

• NavigationPage for full-page modals

• Alerts for user notifications

• Action sheets for pop-up menus

Page 29: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Full Screen Modal using Push and Pop

• Navigation.PushModalAsync( new nextPage());

• Navigation.PopModalAsync();

Page 30: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Full Screen Modal using Push and Pop

• Demo: ModalPage

Page 31: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Modal: Alerts

Boolean answer = await DisplayAlert(" Start", "Are you ready to begin?", "Yes", "No");

Page 32: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Modal: Action Sheets

Button button = new Button { Text = "Show ActionSheet" };

button.Clicked += async (sender, e) =>

{

String action = await DisplayActionSheet("Options",

"Cancel", null, "Here", "There", "Everywhere");

label.Text = "Action is :" + action;

};

Page 33: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Modal: Action Sheets

Page 34: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Modal: Action Sheets

• Demo: PopupMenu

Page 35: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

State Management

• Maintain the illusion of continuity during navigation

• Sharing of data between screens

• Pass variables directly into an instantiated ContentPage

Page 36: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Passing Data

• Pass data values directly into a page’s constructor

• Static Properties dictionary on the Application object to persist key/ value pairs to disk

• Static data instance (global) available to all pages

• Static properties on the Application object

Page 37: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Passing Data

• Demo: PropertiesPage1

• Demo:GlobalPage1, Global

Page 38: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Drill-down Lists

• by Item

• by Page

• Grouped

Page 39: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Drill-down Lists

• by Item – use a ListView

• by Page – use a ListView

• Grouped – use a TableView

Use PushAsync when user clicks a row

Page 40: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Drill-down Lists:NavigationPage

• Wrap list page in a NavigationPage

public class App : Application

{

public App()

{

MainPage = new NavigationPage(new DrilldownListViewByItem());

}

}

Page 41: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Drill-down Lists

• Demo: DrilldownListViewByItem

• Demo: DrilldownListViewByPage

• Demo: DrilldownTableView

Page 42: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Navigation Drawer

• Demo: MasterDetailPage

Page 43: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Tabs using TabbedPage

• Static

• Data-bound

• Demos

Page 44: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Springboard: Images with Gesture Recognizers

• Roll your own Springboard (demo)

Page 45: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Carousel using CarouselPage

this.Children.Add(new FirstPage());

this.Children.Add(new SecondPage());

this.Children.Add(new ThirdPage());

demo

Page 46: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Xamarin.Android Navigation

• Hierarchical navigation using Toolbar or ActionBar

• Modal using DialogFragment, AlertDialog, and PopupMenu

• Drill-down list using ListView

• Navigation drawer using DrawerLayout

• Tabs using ActionBar

Page 47: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Xamarin.iOSNavigation

• Hierarchical navigation using UINavigationController, the push segue, or the PushViewController

• Modal using the modal segue, the PresentViewController, and UIAlertAcontroller

• Drill-down list using UINavigationController

• Navigation drawer using components

• Tabs using UITabBarController

Page 48: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Android State Management

Android uses a class called Bundle, which is a dictionary that contains passed values, housed inside a class called Intent, which we use to call new activities

Page 49: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

iOSState Management

iOS developers favor public properties on the destination view controller, but iOS supports passing parameters into the destination page’s constructor

Page 50: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Xamarin.Forms Navigation

Navigation Pattern Xamarin.Forms Class

Hierarchical NavigationPage

Modal NavigationPage, alerts, and ActionSheets

Drill-down lists NavigationPage, ListView, and TableView

Navigation drawer MasterDetailPage

Tabs TabbedPage

Springboard images with gesture recognizers

Carousel CarouselPage

Page 51: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

It’s all on GitHub

https://github.com/danhermes/xamarin-book-examples

Page 52: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Jesse Liberty’s Video Courses: Pluralsight.com

• Creating Custom Controls in Xamarin.Forms

• Beginning Automated Testing of Xamarin Applications

• Beginning Mobile Development with Xamarin

• Xamarin.Forms and Data

• XAML for Xamarin.Forms

https://www.pluralsight.com/authors/jesse-liberty

Page 53: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Need Something Xamarin-flavored?

• I do Xamarin consultations

• I do Xamarin training

• My firm does Xamarin development

• We help make Xamarin projects work

Page 54: Xamarin Navigation Patterns - Lexicon Systems - Dan …lexiconsystemsinc.com/ftp/Xamarin Navigation... · Xamarin Navigation Patterns Dan Hermes developer, author, consultant, founder

Xamarin NavigationPatterns

Dan Hermesdeveloper, author, consultant,

founder of Lexicon Systems

[email protected]

Available on Amazon

My blog: www.mobilecsharpcafe.com

Twitter: @danhermes


Recommended