SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Android UI patterns
What? Why? How?

            Gautham NS
            One touch expenser
What are covered?
●   Action bar
●   Drag & Drop sorting
●   Swipe to dismiss




                          Gautham NS
Action Bar




Dedicated space at the top of each screen.
Introduced in Android 3.0 (Honeycomb).
Alternative to the menu button.


                      Gautham NS
Action Bar
●   Actions
●   Navigation
●   Branding

●   One of the most important design elements
●   Consistency with core and other Apps.
●   Every modern Android app should have it.
    Absolutely no exception.
                      Gautham NS
Knowing is not enough.

              ●   My own example.
              ●   Not using Action Bar
                  correctly.
              ●   Actions and
                  navigation in the
                  content area.



         Gautham NS
Better




 Gautham NS
General Organization



1. App icon
2. View control
3. Action buttons
4. Action overflow


                     Gautham NS
Action buttons
●   Prioritize your actions using FIT scheme.
    (Frequent, Important, Typical).
●   If either F, I or T apply, then action bar.
    Otherwise, action overflow.
●   Action overflow: Provides access to less
    frequently used actions.




                          Gautham NS
Split Action Bar
1. Main Action bar
2. Top bar
3. Bottom bar


 Be careful. Can be
 overwhelming.
 Note: You cannot have
 actions both on top and
 bottom.

                           Gautham NS
Split Action bar




Do not use it for
navigation please.




                     Gautham NS
View Controls
Three different controls to allow users to
switch between data in different views.
–   Tabs
–   Spinners
–   Drawers




                     Gautham NS
Tabs
●   To switch views frequently.
●   To be highly aware of the alternate views.
●   Fixed tabs
●   Scrollable tabs


    Always allow swiping left or right for switching
    between tabs.


                         Gautham NS
Tabs




Scrollable tabs                Fixed tabs



                  Gautham NS
Spinners
●   Drop down menu.
●   User switching
    between views of
    same data set or
    sets of the same
    type.




                       Gautham NS
Drawers
●   Slide-out menu.
●   Direct navigation to a
    number of views without
    direct relationships between
    each other.
●   Topmost level of app's
    hierarchy.
●   Opened by Up caret & edge
    swipe or swipe from
    anywhere.



                               Gautham NS
Branding

       ●   Branding does not
           stop at ActionBar.
       ●   Use Android Holo
           Colors Generator.
           ( android-holo-colors.com )




  Gautham NS
Branding done right




       Gautham NS
ActionBar Implementation
●   Available for Android 3.0 and above.
●   Use ActionBarSherlock for 2.x and up.
●   ActionBarSherlock uses native implementation
    for 4.0+ and custom implementation for
    previous versions.




                        Gautham NS
ActionBarSherlock implementation
●   Extend SherlockActivity or
    SherlockFragmentActivity.
●   getSupportActionBar() (instead of
    getActionBar()).
●   SherlockFragment and SherlockListFragment
    if you want menu related methods in
    fragments.



                        Gautham NS
Swiping between tabs
●   Always allow the user to navigate between views by
    swiping left or right on the content area.
●   Use ViewPager in conjunction with the ActionBar
    tabs
●   Use fragments as tabs.
●   http://developer.android.com/training/implementing-nav
    igation/lateral.html
●   Bug in Android system in landscape when swiping



                          Gautham NS
Drawers (Slide-out menu)
●   New pattern becoming very popular for
    navigation.
●   Lot of debate in the Android community about
    its behaviour.
●   Popular library: SlidingMenu by Jeremy
    Feinstein. (
    https://github.com/jfeinstein10/SlidingMenu )



                        Gautham NS
Drag. And drop. Any.do style
●   Sorting list view with the help
    of drag and drop.
●   Useful for todo list, favorites,
    music playlists, groceries list
    etc.
●    Easy and intuitive
    rearranging of list items.
●   Remember, Not every list
    needs drag and drop.
●   App should sort for the user
    based on the usage patterns.
                                 Gautham NS
Drag. And Drop.
●   Let the users know they can drag and drop.
●   One way is by showing drag drop image.




                       Gautham NS
Swipe to dismiss
●   As the name
    suggests, swipe to
    remove an item.
●   Actions can also be
    mark completed,
    archive, etc.
●   Used in android core
    UI (dismissing
    notifications).

                          Gautham NS
Swipe to dismiss
●   Swipe from which side? Preferably both.
●   Not suitable for all apps.
●   Few downsides
    –   Difficult to discover.
    –   Swipe also used for navigation between tabs.
    –   Accidental swiping can happen. Should allow for
        recovering data.



                                 Gautham NS
Implementation
●   Library: DragSortListView by Carl A. Bauer.
●   Supports drag and drop sorting and swipe to
    dismiss.
●   DragSortListView an extension of Android
    ListView.
●   Allows both click to remove and fling to
    remove.



                        Gautham NS
Example xml

 <com.mobeta.android.dslv.DragSortListView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dslv="http://schemas.android.com/apk/res/org.blrdroid
                         .expenseapp"
                 android:id="@android:id/list"
              android:layout_width="fill_parent"
            android:layout_height="wrap_content"
                              -----
                              -----
                              -----
                  dslv:track_drag_sort="false"
             dslv:use_default_controller="true" />
                           Gautham NS
Java code:
mDslv = getListView();

DragSortController controller = new
  DragSortController(mDslv);

mDslv.setFloatViewManager(controller);

mDslv.setOnTouchListener(controller);

mDslv.setDropListener(mDropListener);

mDslv.setRemoveListener(mRemoveListener);

                         Gautham NS
Finally,
   Questions?

                   @gauthamns
gauthamns@onetouchexpenser.com

        Gautham NS

Weitere ähnliche Inhalte

Ähnlich wie Coding for modern UI - BlrDroid

Angular.js Directives for Interactive Web Applications
Angular.js Directives for Interactive Web ApplicationsAngular.js Directives for Interactive Web Applications
Angular.js Directives for Interactive Web ApplicationsBrent Goldstein
 
Full stack development
Full stack developmentFull stack development
Full stack developmentArnav Gupta
 
Serenity for Android: Design Tips for Android TV
Serenity for Android: Design Tips for Android TVSerenity for Android: Design Tips for Android TV
Serenity for Android: Design Tips for Android TVDavid Carver
 
Win8 development lessons learned jayway
Win8 development lessons learned jaywayWin8 development lessons learned jayway
Win8 development lessons learned jaywayAndreas Hammar
 
Milos Marinkovic "Modular Android UI"
Milos Marinkovic "Modular Android UI"Milos Marinkovic "Modular Android UI"
Milos Marinkovic "Modular Android UI"IT Event
 
Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Tomáš Kypta
 
MapMapMap documentation
MapMapMap documentationMapMapMap documentation
MapMapMap documentationAnome
 
Android Design Support Library
Android Design Support LibraryAndroid Design Support Library
Android Design Support LibraryIbnu Sina Wardy
 
Mastering the Master Detail Pattern
Mastering the Master Detail PatternMastering the Master Detail Pattern
Mastering the Master Detail PatternCommonsWare
 
uid 3.4- MKH.pptx
uid 3.4- MKH.pptxuid 3.4- MKH.pptx
uid 3.4- MKH.pptxRaviAr5
 
I go8 usermanual_eng
I go8 usermanual_engI go8 usermanual_eng
I go8 usermanual_engKodok Ngorex
 
Getting Started With Material Design
Getting Started With Material DesignGetting Started With Material Design
Getting Started With Material DesignYasin Yildirim
 
Joanna chwastowska responsive layout - droid con
Joanna chwastowska   responsive layout - droid conJoanna chwastowska   responsive layout - droid con
Joanna chwastowska responsive layout - droid conapps4allru
 
User experience and interactions design
User experience and interactions design User experience and interactions design
User experience and interactions design Rakesh Jha
 
Ugnius vaznys tesonet
Ugnius vaznys   tesonetUgnius vaznys   tesonet
Ugnius vaznys tesonetUgniusVaznys
 
Designing and implementing_android_uis_for_phones_and_tablets
Designing and implementing_android_uis_for_phones_and_tabletsDesigning and implementing_android_uis_for_phones_and_tablets
Designing and implementing_android_uis_for_phones_and_tabletsTeddy Koornia
 
Google I/O 2019 - what's new in Android Q and Jetpack
Google I/O 2019 - what's new in Android Q and JetpackGoogle I/O 2019 - what's new in Android Q and Jetpack
Google I/O 2019 - what's new in Android Q and JetpackSunita Singh
 

Ähnlich wie Coding for modern UI - BlrDroid (20)

Angular.js Directives for Interactive Web Applications
Angular.js Directives for Interactive Web ApplicationsAngular.js Directives for Interactive Web Applications
Angular.js Directives for Interactive Web Applications
 
Full stack development
Full stack developmentFull stack development
Full stack development
 
Serenity for Android: Design Tips for Android TV
Serenity for Android: Design Tips for Android TVSerenity for Android: Design Tips for Android TV
Serenity for Android: Design Tips for Android TV
 
Win8 development lessons learned jayway
Win8 development lessons learned jaywayWin8 development lessons learned jayway
Win8 development lessons learned jayway
 
Milos Marinkovic "Modular Android UI"
Milos Marinkovic "Modular Android UI"Milos Marinkovic "Modular Android UI"
Milos Marinkovic "Modular Android UI"
 
Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012
 
MapMapMap documentation
MapMapMap documentationMapMapMap documentation
MapMapMap documentation
 
Android Design Support Library
Android Design Support LibraryAndroid Design Support Library
Android Design Support Library
 
Mastering the Master Detail Pattern
Mastering the Master Detail PatternMastering the Master Detail Pattern
Mastering the Master Detail Pattern
 
Icemtransitionguide2011
Icemtransitionguide2011Icemtransitionguide2011
Icemtransitionguide2011
 
uid 3.4- MKH.pptx
uid 3.4- MKH.pptxuid 3.4- MKH.pptx
uid 3.4- MKH.pptx
 
I go8 usermanual_eng
I go8 usermanual_engI go8 usermanual_eng
I go8 usermanual_eng
 
Roamer World
Roamer WorldRoamer World
Roamer World
 
Getting Started With Material Design
Getting Started With Material DesignGetting Started With Material Design
Getting Started With Material Design
 
Material design
Material designMaterial design
Material design
 
Joanna chwastowska responsive layout - droid con
Joanna chwastowska   responsive layout - droid conJoanna chwastowska   responsive layout - droid con
Joanna chwastowska responsive layout - droid con
 
User experience and interactions design
User experience and interactions design User experience and interactions design
User experience and interactions design
 
Ugnius vaznys tesonet
Ugnius vaznys   tesonetUgnius vaznys   tesonet
Ugnius vaznys tesonet
 
Designing and implementing_android_uis_for_phones_and_tablets
Designing and implementing_android_uis_for_phones_and_tabletsDesigning and implementing_android_uis_for_phones_and_tablets
Designing and implementing_android_uis_for_phones_and_tablets
 
Google I/O 2019 - what's new in Android Q and Jetpack
Google I/O 2019 - what's new in Android Q and JetpackGoogle I/O 2019 - what's new in Android Q and Jetpack
Google I/O 2019 - what's new in Android Q and Jetpack
 

Mehr von BlrDroid

Post I/O 2014 Meetup : Google I/O '14 recap- Amrit Sanjeev
Post I/O 2014 Meetup : Google I/O '14 recap- Amrit SanjeevPost I/O 2014 Meetup : Google I/O '14 recap- Amrit Sanjeev
Post I/O 2014 Meetup : Google I/O '14 recap- Amrit SanjeevBlrDroid
 
June 2014 - Android wear
June 2014 - Android wearJune 2014 - Android wear
June 2014 - Android wearBlrDroid
 
June 2014 - IPC in android
June 2014 - IPC in androidJune 2014 - IPC in android
June 2014 - IPC in androidBlrDroid
 
June 2014 - Building Rabbit MQ based chat on Android
June 2014 - Building Rabbit MQ based chat on AndroidJune 2014 - Building Rabbit MQ based chat on Android
June 2014 - Building Rabbit MQ based chat on AndroidBlrDroid
 
Challenges in writing roboelectric tests
Challenges in writing roboelectric tests Challenges in writing roboelectric tests
Challenges in writing roboelectric tests BlrDroid
 
How to leverage cloud for QA process
How to leverage cloud for QA processHow to leverage cloud for QA process
How to leverage cloud for QA processBlrDroid
 
Usability Testing Made Easy
Usability Testing Made EasyUsability Testing Made Easy
Usability Testing Made EasyBlrDroid
 
How Mobile Developers Could Leverage On Big Data and Data Points to understan...
How Mobile Developers Could Leverage On Big Data and Data Points to understan...How Mobile Developers Could Leverage On Big Data and Data Points to understan...
How Mobile Developers Could Leverage On Big Data and Data Points to understan...BlrDroid
 
Internals of AsyncTask
Internals of AsyncTask Internals of AsyncTask
Internals of AsyncTask BlrDroid
 
Increasing downloads, ratings and revenues
Increasing downloads, ratings and revenues Increasing downloads, ratings and revenues
Increasing downloads, ratings and revenues BlrDroid
 
March 2014 Meetup - Nokia X Tech Session
March 2014 Meetup - Nokia X Tech SessionMarch 2014 Meetup - Nokia X Tech Session
March 2014 Meetup - Nokia X Tech SessionBlrDroid
 
March 2014 Meetup Baug Android and Google App Engine
March 2014 Meetup Baug Android and Google App EngineMarch 2014 Meetup Baug Android and Google App Engine
March 2014 Meetup Baug Android and Google App EngineBlrDroid
 
Android Security - Common Security Pitfalls in Android Applications
Android Security - Common Security Pitfalls in Android ApplicationsAndroid Security - Common Security Pitfalls in Android Applications
Android Security - Common Security Pitfalls in Android ApplicationsBlrDroid
 
High performance graphics and computation - OpenGL ES and RenderScript
High performance graphics and computation - OpenGL ES and RenderScript High performance graphics and computation - OpenGL ES and RenderScript
High performance graphics and computation - OpenGL ES and RenderScript BlrDroid
 
July 2013 Meetup : Introduction To App Publish - Ujjwal Kabra
July 2013 Meetup : Introduction To App Publish - Ujjwal KabraJuly 2013 Meetup : Introduction To App Publish - Ujjwal Kabra
July 2013 Meetup : Introduction To App Publish - Ujjwal KabraBlrDroid
 
July2013 Meetup : App Store Optimization - Shankar soma
July2013 Meetup : App Store Optimization - Shankar somaJuly2013 Meetup : App Store Optimization - Shankar soma
July2013 Meetup : App Store Optimization - Shankar somaBlrDroid
 
June2013 Meetup : Activity Recognition API - Walkmeter - Michal Depa
June2013 Meetup : Activity Recognition API - Walkmeter - Michal DepaJune2013 Meetup : Activity Recognition API - Walkmeter - Michal Depa
June2013 Meetup : Activity Recognition API - Walkmeter - Michal DepaBlrDroid
 
June2013 Meetup : In-App Billing by Soham & Senthil
June2013 Meetup : In-App Billing by Soham & SenthilJune2013 Meetup : In-App Billing by Soham & Senthil
June2013 Meetup : In-App Billing by Soham & SenthilBlrDroid
 
June2013 Meetup : IO13 Deep Dive-Location_api_AmritSanjeev
June2013 Meetup : IO13 Deep Dive-Location_api_AmritSanjeev June2013 Meetup : IO13 Deep Dive-Location_api_AmritSanjeev
June2013 Meetup : IO13 Deep Dive-Location_api_AmritSanjeev BlrDroid
 

Mehr von BlrDroid (20)

Post I/O 2014 Meetup : Google I/O '14 recap- Amrit Sanjeev
Post I/O 2014 Meetup : Google I/O '14 recap- Amrit SanjeevPost I/O 2014 Meetup : Google I/O '14 recap- Amrit Sanjeev
Post I/O 2014 Meetup : Google I/O '14 recap- Amrit Sanjeev
 
June 2014 - Android wear
June 2014 - Android wearJune 2014 - Android wear
June 2014 - Android wear
 
June 2014 - IPC in android
June 2014 - IPC in androidJune 2014 - IPC in android
June 2014 - IPC in android
 
June 2014 - Building Rabbit MQ based chat on Android
June 2014 - Building Rabbit MQ based chat on AndroidJune 2014 - Building Rabbit MQ based chat on Android
June 2014 - Building Rabbit MQ based chat on Android
 
Challenges in writing roboelectric tests
Challenges in writing roboelectric tests Challenges in writing roboelectric tests
Challenges in writing roboelectric tests
 
How to leverage cloud for QA process
How to leverage cloud for QA processHow to leverage cloud for QA process
How to leverage cloud for QA process
 
Usability Testing Made Easy
Usability Testing Made EasyUsability Testing Made Easy
Usability Testing Made Easy
 
How Mobile Developers Could Leverage On Big Data and Data Points to understan...
How Mobile Developers Could Leverage On Big Data and Data Points to understan...How Mobile Developers Could Leverage On Big Data and Data Points to understan...
How Mobile Developers Could Leverage On Big Data and Data Points to understan...
 
Internals of AsyncTask
Internals of AsyncTask Internals of AsyncTask
Internals of AsyncTask
 
Increasing downloads, ratings and revenues
Increasing downloads, ratings and revenues Increasing downloads, ratings and revenues
Increasing downloads, ratings and revenues
 
March 2014 Meetup - Nokia X Tech Session
March 2014 Meetup - Nokia X Tech SessionMarch 2014 Meetup - Nokia X Tech Session
March 2014 Meetup - Nokia X Tech Session
 
March 2014 Meetup Baug Android and Google App Engine
March 2014 Meetup Baug Android and Google App EngineMarch 2014 Meetup Baug Android and Google App Engine
March 2014 Meetup Baug Android and Google App Engine
 
Android Security - Common Security Pitfalls in Android Applications
Android Security - Common Security Pitfalls in Android ApplicationsAndroid Security - Common Security Pitfalls in Android Applications
Android Security - Common Security Pitfalls in Android Applications
 
High performance graphics and computation - OpenGL ES and RenderScript
High performance graphics and computation - OpenGL ES and RenderScript High performance graphics and computation - OpenGL ES and RenderScript
High performance graphics and computation - OpenGL ES and RenderScript
 
July 2013 Meetup : Introduction To App Publish - Ujjwal Kabra
July 2013 Meetup : Introduction To App Publish - Ujjwal KabraJuly 2013 Meetup : Introduction To App Publish - Ujjwal Kabra
July 2013 Meetup : Introduction To App Publish - Ujjwal Kabra
 
July2013 Meetup : App Store Optimization - Shankar soma
July2013 Meetup : App Store Optimization - Shankar somaJuly2013 Meetup : App Store Optimization - Shankar soma
July2013 Meetup : App Store Optimization - Shankar soma
 
June2013 Meetup : Activity Recognition API - Walkmeter - Michal Depa
June2013 Meetup : Activity Recognition API - Walkmeter - Michal DepaJune2013 Meetup : Activity Recognition API - Walkmeter - Michal Depa
June2013 Meetup : Activity Recognition API - Walkmeter - Michal Depa
 
June2013 Meetup : In-App Billing by Soham & Senthil
June2013 Meetup : In-App Billing by Soham & SenthilJune2013 Meetup : In-App Billing by Soham & Senthil
June2013 Meetup : In-App Billing by Soham & Senthil
 
June2013 Meetup : IO13 Deep Dive-Location_api_AmritSanjeev
June2013 Meetup : IO13 Deep Dive-Location_api_AmritSanjeev June2013 Meetup : IO13 Deep Dive-Location_api_AmritSanjeev
June2013 Meetup : IO13 Deep Dive-Location_api_AmritSanjeev
 
IO13 Recap
IO13 RecapIO13 Recap
IO13 Recap
 

Kürzlich hochgeladen

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 

Kürzlich hochgeladen (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 

Coding for modern UI - BlrDroid

  • 1. Android UI patterns What? Why? How? Gautham NS One touch expenser
  • 2. What are covered? ● Action bar ● Drag & Drop sorting ● Swipe to dismiss Gautham NS
  • 3. Action Bar Dedicated space at the top of each screen. Introduced in Android 3.0 (Honeycomb). Alternative to the menu button. Gautham NS
  • 4. Action Bar ● Actions ● Navigation ● Branding ● One of the most important design elements ● Consistency with core and other Apps. ● Every modern Android app should have it. Absolutely no exception. Gautham NS
  • 5. Knowing is not enough. ● My own example. ● Not using Action Bar correctly. ● Actions and navigation in the content area. Gautham NS
  • 7. General Organization 1. App icon 2. View control 3. Action buttons 4. Action overflow Gautham NS
  • 8. Action buttons ● Prioritize your actions using FIT scheme. (Frequent, Important, Typical). ● If either F, I or T apply, then action bar. Otherwise, action overflow. ● Action overflow: Provides access to less frequently used actions. Gautham NS
  • 9. Split Action Bar 1. Main Action bar 2. Top bar 3. Bottom bar Be careful. Can be overwhelming. Note: You cannot have actions both on top and bottom. Gautham NS
  • 10. Split Action bar Do not use it for navigation please. Gautham NS
  • 11. View Controls Three different controls to allow users to switch between data in different views. – Tabs – Spinners – Drawers Gautham NS
  • 12. Tabs ● To switch views frequently. ● To be highly aware of the alternate views. ● Fixed tabs ● Scrollable tabs Always allow swiping left or right for switching between tabs. Gautham NS
  • 13. Tabs Scrollable tabs Fixed tabs Gautham NS
  • 14. Spinners ● Drop down menu. ● User switching between views of same data set or sets of the same type. Gautham NS
  • 15. Drawers ● Slide-out menu. ● Direct navigation to a number of views without direct relationships between each other. ● Topmost level of app's hierarchy. ● Opened by Up caret & edge swipe or swipe from anywhere. Gautham NS
  • 16. Branding ● Branding does not stop at ActionBar. ● Use Android Holo Colors Generator. ( android-holo-colors.com ) Gautham NS
  • 17. Branding done right Gautham NS
  • 18. ActionBar Implementation ● Available for Android 3.0 and above. ● Use ActionBarSherlock for 2.x and up. ● ActionBarSherlock uses native implementation for 4.0+ and custom implementation for previous versions. Gautham NS
  • 19. ActionBarSherlock implementation ● Extend SherlockActivity or SherlockFragmentActivity. ● getSupportActionBar() (instead of getActionBar()). ● SherlockFragment and SherlockListFragment if you want menu related methods in fragments. Gautham NS
  • 20. Swiping between tabs ● Always allow the user to navigate between views by swiping left or right on the content area. ● Use ViewPager in conjunction with the ActionBar tabs ● Use fragments as tabs. ● http://developer.android.com/training/implementing-nav igation/lateral.html ● Bug in Android system in landscape when swiping Gautham NS
  • 21. Drawers (Slide-out menu) ● New pattern becoming very popular for navigation. ● Lot of debate in the Android community about its behaviour. ● Popular library: SlidingMenu by Jeremy Feinstein. ( https://github.com/jfeinstein10/SlidingMenu ) Gautham NS
  • 22. Drag. And drop. Any.do style ● Sorting list view with the help of drag and drop. ● Useful for todo list, favorites, music playlists, groceries list etc. ● Easy and intuitive rearranging of list items. ● Remember, Not every list needs drag and drop. ● App should sort for the user based on the usage patterns. Gautham NS
  • 23. Drag. And Drop. ● Let the users know they can drag and drop. ● One way is by showing drag drop image. Gautham NS
  • 24. Swipe to dismiss ● As the name suggests, swipe to remove an item. ● Actions can also be mark completed, archive, etc. ● Used in android core UI (dismissing notifications). Gautham NS
  • 25. Swipe to dismiss ● Swipe from which side? Preferably both. ● Not suitable for all apps. ● Few downsides – Difficult to discover. – Swipe also used for navigation between tabs. – Accidental swiping can happen. Should allow for recovering data. Gautham NS
  • 26. Implementation ● Library: DragSortListView by Carl A. Bauer. ● Supports drag and drop sorting and swipe to dismiss. ● DragSortListView an extension of Android ListView. ● Allows both click to remove and fling to remove. Gautham NS
  • 27. Example xml <com.mobeta.android.dslv.DragSortListView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:dslv="http://schemas.android.com/apk/res/org.blrdroid .expenseapp" android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" ----- ----- ----- dslv:track_drag_sort="false" dslv:use_default_controller="true" /> Gautham NS
  • 28. Java code: mDslv = getListView(); DragSortController controller = new DragSortController(mDslv); mDslv.setFloatViewManager(controller); mDslv.setOnTouchListener(controller); mDslv.setDropListener(mDropListener); mDslv.setRemoveListener(mRemoveListener); Gautham NS
  • 29. Finally, Questions? @gauthamns gauthamns@onetouchexpenser.com Gautham NS