SlideShare a Scribd company logo
Android
Fragment-Awesome
     Matthew Gaunt
Who is this guy?

• Master in Computer Science in Bristol
• Senior Android Dev @ Mubaloo
• Cross Platform Dev @ Future Platforms
What Fragmentation?
What’s coming up
• Design - I can haz pretty
 • Dips
 • Buckets?
 • What buckets?
 • The story of buckets
• Tips + Examples
Dips

Density Independent Pixels
Abstract the screen size (think rounded
corner rectangle)
Never assume dip > pixels
Buckets?




ldpi   mdpi   hdpi   xhdpi
What Buckets?
Screen density (ldpi, mdpi, hdpi, xhdpi)

Orientation (port, land)

Android Version (v4, v11)

Screen size (small, normal, large, xlarge)
Eeks lots of Images
How to use Buckets

• Images - [ldpi, mdpi, hdpi, xhdpi] [small, normal, large, xlarge]


• Layout -[land, port]


• Themes / Styles -          [v4, v11]


• Dimensions -       [small, normal, large, xlarge]
The History...
The History...


<port>
 land

  1.5
The History...

           ldpi
<port>     mdpi
 land      hdpi
  1.5       1.6
The History...
                   small
           ldpi   normal
<port>     mdpi    large
 land      hdpi   xlarge
  1.5       1.6    3.0 (ish)
The History...
                   small
           ldpi   normal        ldpi
                                mdpi
<port>     mdpi    large        hdpi
 land      hdpi   xlarge       xhdpi
  1.5       1.6    3.0 (ish)    4.0
Recap

• Lots of buckets
• Lots of resources to apply the buckets to
• How it relates to other platforms like iOS
Random.
Phones / Tablets?
                    ldpi   mdpi  hdpi xhdpi  total
Small              1.7%           2.4%       4.1%
Normal             0.7%    18.5% 66.3% 2.5% 88.0%
Large              0.2%     2.8%             3.0%
XLarge                      4.9%             4.9%

       ldpi
      mdpi                               mdpi
       hdpi                            ? hdpi ?
      xhdpi                           ? xhdpi ?

 Phones                            Tablets
  normal / small                    large / xlarge
Hitting Both?
drawable              For all buckets
drawable-ldpi
drawable-mdpi
                           Base
drawable-hdpi
drawable-xhdpi
drawable-large-?
                        Additional
drawable-xlarge-?
Tips to Reduce Work

            1
 Use values everywhere
   (dimens, ints, etc.)
Tips to Reduce Work
values
     dimens.xml
           <resources>
              <dimen name="default_text_size">20sp</dimen>
              <dimen name="default_large_text_size">30sp</dimen>
              <dimen name="splash_vertical_spacing">20dp</dimen>
              <dimen name="gauntface_tag_bottom_spacing">20dp</dimen>
              <dimen name="gauntface_tag_padding">5dp</dimen>
              <dimen name="gauntface_tag_radius">10dp</dimen>
              <dimen name="splash_gauntface_progress_bar">30dp</dimen>
              <dimen name="generic_dialog_padding">15dp</dimen>
              <dimen name="generic_dialog_bg_radius">4dp</dimen>
              <dimen name="generic_dialog_title_spacer_height">4dp</dimen>
              <dimen name="generic_dialog_title_spacer_vertical_spacing">10dp</dimen>
              <dimen name="sync_info_padding">10dp</dimen>
              <dimen name="sync_info_title_text_size">35sp</dimen>
              <dimen name="sync_info_msg_text_size">20sp</dimen>
              <dimen name="sync_info_bg_radius">10dp</dimen>
              <dimen name="sync_info_prof_pic_radius">8dp</dimen>
              <dimen name="sync_info_prof_pic_size">128dp</dimen>
          </resources>

values-land
     dimens.xml
           <resources>
              <dimen name="default_text_size">15sp</dimen>
              <dimen name="default_large_text_size">25sp</dimen>
              <dimen name="splash_vertical_spacing">10dp</dimen>
          </resources>
Tips to Reduce Work
   values      values-land
Tips to Reduce Work

          2
 Learn the ways of the
     nine patch
Tips to Reduce Work
Tips to Reduce Work

          3
Use <Shape> drawables
Tips to Reduce Work
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="0"
        android:endColor="@color/dark_blue"
        android:gradientRadius="660"
        android:startColor="@color/splash_light_blue"
        android:type="radial" />
</shape>
Tips to Reduce Work
Tips to Reduce Work

                             4
 Use Themes & Styles
  www.gauntface.co.uk/blog/2011/01/18/android-ui-reference
Tips to Reduce Work
values
     themes.xml
          <resources>
               <style name="Theme.FacebookSync" parent="@style/Theme.FacebookSync.Support">
                  ...
              </style>
              <style name="Theme.FacebookSync.NoTitleBar">
                  ...
              </style>
              <style name="Theme.FacebookSync.Dialog" parent="@style/Theme.Dialog.Support">
                  ...
               </style>
          </resources>

values-v11
     themes-v11.xml
          <resources>
              <style name="Theme.FacebookSync.Support" parent="@android:style/Theme.Holo"></style>
              <style name="Theme.Dialog.Support" parent="@android:style/Theme.Holo.Dialog"></style>
          </resources>

values-v4
     themes-v4.xml
          <resources>
              <style name="Theme.FacebookSync.Support" parent="@android:style/Theme.NoTitleBar"></style>
              <style name="Theme.Dialog.Support" parent="@android:style/Theme.Dialog"></style>
          </resources>
Tips to Reduce Work
Tips to Reduce Work

           5
Give up control - be fluid
Tips to Reduce Work
     Note: Not the best example ;)
Tips to Reduce Work
You’re Results May Vary
Thanks :)
    @gauntface
matt@gauntface.co.uk

More Related Content

PDF
Mobile in a Nutshell
PDF
Intro to Google TV
PDF
Android UI Reference
PDF
Introduction to fragments in android
ODP
Android App Development - 06 Fragments
PDF
Android Fragment
PDF
Android - Working with Fragments
PPT
Introduction to Android Fragments
Mobile in a Nutshell
Intro to Google TV
Android UI Reference
Introduction to fragments in android
Android App Development - 06 Fragments
Android Fragment
Android - Working with Fragments
Introduction to Android Fragments

Similar to Android Fragment-Awesome (20)

PDF
Androidfragment
PDF
Introduction to mobile programming with Androids.
PDF
Android training day 3
PPTX
Supporting multi screen in android
PPTX
Supporting multi screen in android cn
PPTX
Android supporting multiple screen
PPTX
Introduction to Big Data and Hadoop
PDF
Android在多屏幕、多设备上的适配 | 布丁 任斐
PPTX
TDC2012 Android - Deixando Sua Interface mais Bonita com Shapes
PPTX
Fernando F. Gallego - Efficient Android Resources 101
KEY
Let's dig into the Omega Theme!
PDF
Does my DIV look big in this?
PPTX
Hadoop Interview Questions and Answers
PPTX
Big Data - An Overview
PDF
Elephant in the room: A DBA's Guide to Hadoop
PPT
Bootstrap 3 training
PPTX
Breaking the oracle tie
PDF
Distributed Data Analysis with Hadoop and R - Strangeloop 2011
PDF
Hadoop Developer
PDF
Introduction to Big Data & Hadoop
Androidfragment
Introduction to mobile programming with Androids.
Android training day 3
Supporting multi screen in android
Supporting multi screen in android cn
Android supporting multiple screen
Introduction to Big Data and Hadoop
Android在多屏幕、多设备上的适配 | 布丁 任斐
TDC2012 Android - Deixando Sua Interface mais Bonita com Shapes
Fernando F. Gallego - Efficient Android Resources 101
Let's dig into the Omega Theme!
Does my DIV look big in this?
Hadoop Interview Questions and Answers
Big Data - An Overview
Elephant in the room: A DBA's Guide to Hadoop
Bootstrap 3 training
Breaking the oracle tie
Distributed Data Analysis with Hadoop and R - Strangeloop 2011
Hadoop Developer
Introduction to Big Data & Hadoop
Ad

Recently uploaded (20)

PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Cloud computing and distributed systems.
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Encapsulation theory and applications.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Spectroscopy.pptx food analysis technology
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Big Data Technologies - Introduction.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Empathic Computing: Creating Shared Understanding
PDF
cuic standard and advanced reporting.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Mobile App Security Testing_ A Comprehensive Guide.pdf
Cloud computing and distributed systems.
sap open course for s4hana steps from ECC to s4
Encapsulation theory and applications.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Spectroscopy.pptx food analysis technology
Spectral efficient network and resource selection model in 5G networks
Big Data Technologies - Introduction.pptx
Approach and Philosophy of On baking technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Encapsulation_ Review paper, used for researhc scholars
Building Integrated photovoltaic BIPV_UPV.pdf
MYSQL Presentation for SQL database connectivity
NewMind AI Weekly Chronicles - August'25 Week I
Digital-Transformation-Roadmap-for-Companies.pptx
Machine learning based COVID-19 study performance prediction
Empathic Computing: Creating Shared Understanding
cuic standard and advanced reporting.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Ad

Android Fragment-Awesome

  • 1. Android Fragment-Awesome Matthew Gaunt
  • 2. Who is this guy? • Master in Computer Science in Bristol • Senior Android Dev @ Mubaloo • Cross Platform Dev @ Future Platforms
  • 4. What’s coming up • Design - I can haz pretty • Dips • Buckets? • What buckets? • The story of buckets • Tips + Examples
  • 5. Dips Density Independent Pixels Abstract the screen size (think rounded corner rectangle) Never assume dip > pixels
  • 6. Buckets? ldpi mdpi hdpi xhdpi
  • 7. What Buckets? Screen density (ldpi, mdpi, hdpi, xhdpi) Orientation (port, land) Android Version (v4, v11) Screen size (small, normal, large, xlarge)
  • 8. Eeks lots of Images
  • 9. How to use Buckets • Images - [ldpi, mdpi, hdpi, xhdpi] [small, normal, large, xlarge] • Layout -[land, port] • Themes / Styles - [v4, v11] • Dimensions - [small, normal, large, xlarge]
  • 12. The History... ldpi <port> mdpi land hdpi 1.5 1.6
  • 13. The History... small ldpi normal <port> mdpi large land hdpi xlarge 1.5 1.6 3.0 (ish)
  • 14. The History... small ldpi normal ldpi mdpi <port> mdpi large hdpi land hdpi xlarge xhdpi 1.5 1.6 3.0 (ish) 4.0
  • 15. Recap • Lots of buckets • Lots of resources to apply the buckets to • How it relates to other platforms like iOS
  • 17. Phones / Tablets? ldpi mdpi hdpi xhdpi total Small 1.7% 2.4% 4.1% Normal 0.7% 18.5% 66.3% 2.5% 88.0% Large 0.2% 2.8% 3.0% XLarge 4.9% 4.9% ldpi mdpi mdpi hdpi ? hdpi ? xhdpi ? xhdpi ? Phones Tablets normal / small large / xlarge
  • 18. Hitting Both? drawable For all buckets drawable-ldpi drawable-mdpi Base drawable-hdpi drawable-xhdpi drawable-large-? Additional drawable-xlarge-?
  • 19. Tips to Reduce Work 1 Use values everywhere (dimens, ints, etc.)
  • 20. Tips to Reduce Work values dimens.xml <resources>         <dimen name="default_text_size">20sp</dimen>         <dimen name="default_large_text_size">30sp</dimen>         <dimen name="splash_vertical_spacing">20dp</dimen>         <dimen name="gauntface_tag_bottom_spacing">20dp</dimen>         <dimen name="gauntface_tag_padding">5dp</dimen>         <dimen name="gauntface_tag_radius">10dp</dimen>         <dimen name="splash_gauntface_progress_bar">30dp</dimen>         <dimen name="generic_dialog_padding">15dp</dimen>         <dimen name="generic_dialog_bg_radius">4dp</dimen>         <dimen name="generic_dialog_title_spacer_height">4dp</dimen>         <dimen name="generic_dialog_title_spacer_vertical_spacing">10dp</dimen>         <dimen name="sync_info_padding">10dp</dimen>         <dimen name="sync_info_title_text_size">35sp</dimen>         <dimen name="sync_info_msg_text_size">20sp</dimen>         <dimen name="sync_info_bg_radius">10dp</dimen>         <dimen name="sync_info_prof_pic_radius">8dp</dimen>         <dimen name="sync_info_prof_pic_size">128dp</dimen>     </resources> values-land dimens.xml <resources>         <dimen name="default_text_size">15sp</dimen>         <dimen name="default_large_text_size">25sp</dimen>         <dimen name="splash_vertical_spacing">10dp</dimen>     </resources>
  • 21. Tips to Reduce Work values values-land
  • 22. Tips to Reduce Work 2 Learn the ways of the nine patch
  • 24. Tips to Reduce Work 3 Use <Shape> drawables
  • 25. Tips to Reduce Work <shape     xmlns:android="http://schemas.android.com/apk/res/android"     android:shape="rectangle">     <gradient         android:angle="0"         android:endColor="@color/dark_blue"         android:gradientRadius="660"         android:startColor="@color/splash_light_blue"         android:type="radial" /> </shape>
  • 27. Tips to Reduce Work 4 Use Themes & Styles www.gauntface.co.uk/blog/2011/01/18/android-ui-reference
  • 28. Tips to Reduce Work values themes.xml <resources> <style name="Theme.FacebookSync" parent="@style/Theme.FacebookSync.Support">         ...     </style>     <style name="Theme.FacebookSync.NoTitleBar">         ...     </style>     <style name="Theme.FacebookSync.Dialog" parent="@style/Theme.Dialog.Support">         ... </style> </resources> values-v11 themes-v11.xml <resources>     <style name="Theme.FacebookSync.Support" parent="@android:style/Theme.Holo"></style>     <style name="Theme.Dialog.Support" parent="@android:style/Theme.Holo.Dialog"></style> </resources> values-v4 themes-v4.xml <resources>     <style name="Theme.FacebookSync.Support" parent="@android:style/Theme.NoTitleBar"></style>     <style name="Theme.Dialog.Support" parent="@android:style/Theme.Dialog"></style> </resources>
  • 30. Tips to Reduce Work 5 Give up control - be fluid
  • 31. Tips to Reduce Work Note: Not the best example ;)
  • 34. Thanks :) @gauntface matt@gauntface.co.uk