user experience and interactions design

28
User Experience and Interactions Design Rakesh Kumar Jha M. Tech, MBA Delivery Manager

Upload: rakesh-jha

Post on 22-Apr-2015

90 views

Category:

Mobile


0 download

DESCRIPTION

User experience and interactions design

TRANSCRIPT

Page 1: User experience and interactions design

User Experience and Interactions Design

Rakesh Kumar JhaM. Tech, MBA

Delivery Manager

Page 2: User experience and interactions design

Best Practices for Interaction and Engagement

• These classes teach you how to engage and retain your users by implementing the best interaction patterns for Android.

Page 3: User experience and interactions design

Best Practices for Interaction and Engagement

1. Designing Effective Navigation2. Implementing Effective Navigation3. Notifying the User4. Adding Search Functionality5. Making Your App Content Searchable by

Google

Page 4: User experience and interactions design

Designing Effective Navigation

1. Planning Screens and Their Relationships2. Planning for Multiple Touchscreen Sizes3. Providing Descendant and Lateral Navigation4. Providing Ancestral and Temporal Navigation5. Putting it All Together: Wireframing the

Example App

Page 5: User experience and interactions design

Implementing Effective Navigation

1. Creating Swipe Views with Tabs2. Creating a Navigation Drawer3. Providing Up Navigation4. Providing Proper Back Navigation5. Implementing Descendant Navigation

Page 6: User experience and interactions design

Notifying the User

1. Building a Notification2. Preserving Navigation when Starting an

Activity3. Updating Notifications4. Using Big View Styles5. Displaying Progress in a Notification

Page 7: User experience and interactions design

Adding Search Functionality

1. Setting up the Search Interface2. Storing and Searching for Data3. Remaining Backward Compatible

Page 8: User experience and interactions design

Making Your App Content Searchable by Google

1. Enabling Deep Links for App Content2. Specifying App Content for Indexing

Page 9: User experience and interactions design

Designing Effective Navigation

Page 10: User experience and interactions design

Planning Screens and Their Relationships

• Buttons leading to different sections (e.g., stories, photos, saved items)

• Vertical lists representing collections (e.g., story lists, photo lists, etc.)

• Detail information (e.g., story view, full-screen photo view, etc.)

Page 11: User experience and interactions design

Planning for Multiple Touchscreen Sizes

• Designing applications for television sets also requires attention to other factors, including interaction methods (i.e., the lack of a touch screen), legibility of text at large reading distances, and more.

• Although this discussion is outside the scope of this class,

Page 12: User experience and interactions design

Planning for Multiple Touchscreen Sizes

• Group Screens with Multi-pane Layouts• Design for Multiple Tablet Orientations• Group Screens in the Screen Map• Android Design: Multi-pane Layouts• Designing for Multiple Screens

Page 13: User experience and interactions design

Providing Descendant and Lateral Navigation

• Buttons and Simple Targets• Lists, Grids, Carousels, and Stacks• Tabs• Horizontal Paging (Swipe Views)• Android Design: Buttons• Android Design: Lists• Android Design: Grid Lists• Android Design: Tabs• Android Design: Swipe Views

Page 14: User experience and interactions design

Putting it All Together: Wireframing the Example App

• Choose Patterns• Sketch and Wireframe• Create Digital Wireframes

Page 15: User experience and interactions design

Putting it All Together: Wireframing the Example App

• Wireframing is the step in the design process where you begin to lay out your screens. Get creative and begin imagining how to arrange UI elements to allow users to navigate your app. Keep in mind that at this point, pixel-perfect precision (creating high-fidelity mockups) is not important

Page 16: User experience and interactions design

Putting it All Together: Wireframing the Example App

• Wireframing is the step in the design process where you begin to lay out your screens. Get creative and begin imagining how to arrange UI elements to allow users to navigate your app. Keep in mind that at this point, pixel-perfect precision (creating high-fidelity mockups) is not important

Page 17: User experience and interactions design

Implementing Effective Navigation

Page 18: User experience and interactions design

Designing Effective Navigation

• how to implement the key navigation design patterns detailed in the Designing Effective Navigation

Page 19: User experience and interactions design

Designing Effective Navigation

• how to implement the key navigation design patterns detailed in the Designing Effective Navigation

• how to implement navigation patterns with tabs, swipe views, and a navigation drawer

• Several elements require the Support Library APIs.

Page 20: User experience and interactions design

Creating Swipe Views with Tabs

• Learn how to implement tabs in the action bar and provide horizontal paging (swipe views) to navigate between tabs or left navigationbar.

• wipe views provide lateral navigation between sibling screens such as tabs with a horizontal finger gesture (a pattern sometimes known as horizontal paging)

Page 21: User experience and interactions design

Creating Swipe Views with Tabs• <?xml version="1.0" encoding="utf-8"?>

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" />

• To insert child views that represent each page, you need to hook this layout to a PagerAdapter. There are two kinds of adapter you can use:

Page 22: User experience and interactions design

Creating Swipe Views with Tabs

• FragmentPagerAdapter – This is best when navigating between sibling screens representing a fixed, small number of pages.• FragmentStatePagerAdapter – This is best for paging across a collection of objects for which the number of pages is undetermined. It destroys fragments as the user navigates to other pages, minimizing memory usage.

Page 23: User experience and interactions design

Creating Swipe Views with Tabspublic class CollectionDemoActivity extends FragmentActivity { // When requested, this adapter returns a DemoObjectFragment, // representing an object in the collection. DemoCollectionPagerAdapter mDemoCollectionPagerAdapter; ViewPager mViewPager;

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_collection_demo);

// ViewPager and its adapters use support library // fragments, so use getSupportFragmentManager. mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter( getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mDemoCollectionPagerAdapter); }}

Page 24: User experience and interactions design

Creating Swipe Views with Tabspublic class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter { public DemoCollectionPagerAdapter(FragmentManager fm) { super(fm); }

@Override public Fragment getItem(int i) { Fragment fragment = new DemoObjectFragment(); Bundle args = new Bundle(); // Our object is just an integer :-P args.putInt(DemoObjectFragment.ARG_OBJECT, i + 1); fragment.setArguments(args); return fragment; }

@Override public int getCount() { return 100; }

@Override public CharSequence getPageTitle(int position) { return "OBJECT " + (position + 1); }}

Page 25: User experience and interactions design

Creating Swipe Views with Tabs/ Instances of this class are fragments representing a single// object in our collection.public static class DemoObjectFragment extends Fragment { public static final String ARG_OBJECT = "object";

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // The last two arguments ensure LayoutParams are inflated // properly. View rootView = inflater.inflate( R.layout.fragment_collection_object, container, false); Bundle args = getArguments(); ((TextView) rootView.findViewById(android.R.id.text1)).setText( Integer.toString(args.getInt(ARG_OBJECT))); return rootView; }}

Page 26: User experience and interactions design

Add Tabs to the Action Bar

• Action bar tabs offer users a familiar interface for navigating between and identifying sibling screens in your app.

Page 27: User experience and interactions design

@Overridepublic void onCreate(Bundle savedInstanceState) { final ActionBar actionBar = getActionBar(); ...

// Specify that tabs should be displayed in the action bar. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

// Create a tab listener that is called when the user changes tabs. ActionBar.TabListener tabListener = new ActionBar.TabListener() { public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { // show the given tab }

public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { // hide the given tab }

public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { // probably ignore this event } };

// Add 3 tabs, specifying the tab's text and TabListener for (int i = 0; i < 3; i++) { actionBar.addTab( actionBar.newTab() .setText("Tab " + (i + 1)) .setTabListener(tabListener)); }}

Page 28: User experience and interactions design

Change Tabs with Swipe Views@Overridepublic void onCreate(Bundle savedInstanceState) { ...

// Create a tab listener that is called when the user changes tabs. ActionBar.TabListener tabListener = new ActionBar.TabListener() { public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { // When the tab is selected, switch to the // corresponding page in the ViewPager. mViewPager.setCurrentItem(tab.getPosition()); } ... };}