490 likes | 606 Views
The Android ecosystem faces significant fragmentation due to the multitude of devices and operating system versions. This discussion, based on Glenn Bech's insights, emphasizes the importance of creating applications that function seamlessly across varying Android versions, particularly Gingerbread, ICS, and Honeycomb. We explore the usage of support libraries like ActionBarSherlock and the advantages of implementing fragments for better UX. With 65% of devices still on Gingerbread as of mid-2012, developers must prioritize compatibility and usability to enhance user experiences across diverse Android environments.
E N D
TacklingAndroid FragmentationDev:Mobile 2012 @Glennbech , Inmeta consulting 16 klocs – not rocket science
Source: Twitter / http://en.wikipedia.org/wiki/Mobile_operating_system#Market_share
HTC 3G SLIDE X Got GingerbreadMay 2011 On saleMay 2010
Situation report June 2012 Android • ICS 7.3% (All versions) • Honeycomb 2.7% • Gingerbread (2.3) dominant @ 65% • Froyo (2.2) still at 19.1 % • As ofFebruary 2012 Phones withno ICS upgrade plan still sold • This willcontinue iOS • 61% oniOS 5 or above in 15. days! Source: http://developer.android.com/resources/dashboard/platform-versions.html
Agenda «Prove that it is feasable, and not overlydifficult to, write single APK, native androidappsthatworkswellacrossandroidversions and form factors»
ActionBar& HomeNavigation ICS/Honeycomb tabs ViewPager Action Items https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo
ContextualActionbar Tab Navigation … withListViewmultiselect https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo
https://play.google.com/store/apps/details?id=com.glennbech.nutrinfohttps://play.google.com/store/apps/details?id=com.glennbech.nutrinfo
Situation report June 2012 Android • ICS 7.3% (All versions) • Honeycomb 2.7% • Gingerbread (2.3) dominant @ 65% • Froyo (2.2) still at 19.1 % • As ofFebruary 2012 Phones withno ICS upgrade plan still sold • This willcontinue iOS • 61% oniOS 5 or above in 15. days! Source: http://developer.android.com/resources/dashboard/platform-versions.html
Androidmanifest.xml <uses-sdk android:minSdkVersion=”7" android:targetSdkVersion="14” />
Example. Helloworld publicclassTargetSDKVersionExampleextends Activity { publicvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override publicbooleanonCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } }
Example. Menu.xml <menu> <item android:id="@+id/menu_save« android:icon="@drawable/ic_menu_save" android:title="@string/menu_save" android:showAsAction="ifRoom|withText" /> </menu>
ICS Gingrerbread
Androidmanifest.xml <uses-sdk android:minSdkVersion=”7" android:targetSdkVersion="10” />
ICS Gingrerbread
Android Support Libraries • Official Android 3 & 4 featuresbackported • Very simple to use; downloadusing SDK manager and include JAR file in projectIncludes • Fragment API & DialogFragment • Loader API • ViewPager, Pager Adapter & FragmentPagerAdapter • SearchView • Simple Actionbarimplementationprovided in samples source: http://developer.android.com/sdk/compatibility-library.html#SettingUp
Limitationsofthe support libraries • No action bar • Code «infection» • CannotextendMapActivitysinceyou have to extendscustom Activity class
ActionbarSherlock • Written by Jake Whorton • Easy to use (git clone) • Includes & based on support libraries • Elaborate. Support for wide range of Honeycomb and ICS features • Actionbar • Navigation Modes, Tabs and spinners in the action bar. • Contextual Action Bar / ActionModeThe ICS feature "split action bar“ • Pluginfor MapActvity(!) • www.actionbarsherlock.com • Apache License Version 2.0
A quicksummary • We have used the support libraries, throughActionBarSherlock to get ICS lookingappson pre-ICS phones (back to 1.6 supported) • The price • Must use a customtheme • Must extendsSherlockActivityclasses • Must useoverloadedmethods, and usegetSuppportMenuInflater() etc.
Fragments crashcourse WHAT • Introducedin Android 3.0 • Reusable UI components • Have theirownlifecycle • Canaddtheirownitems to actionbar etc. WHY • Code Reuse • Fragments areintegratedintothe ICS SDK
Why - Reuse http://developer.android.com/guide/topics/fundamentals/fragments.html
onTabSelected(ActionBar.Tabtab, FragmentTransactionft) ActionbarusesTabListeners for tab navigation Source: http://developer.android.com/reference/android/app/ActionBar.TabListener.html
Using fragments - example • Declared in layout • Added/removed from code using FragmentManager
Button (100dpx100dp) HTC Sensation
Definitions • xlarge screens are at least 960dp x 720dp. • large screens are at least 640dp x 480dp. • normal screens are at least 470dp x 320dp. • small screens are at least 426dp x 320dp
Best Match layout picking • Excellent support for providing resourcesbasedondeviceconfiguration • Versions • mcc310-mnc004(US/Verizon) • Car/desk (docking) • Night mode • ETC Source: http://developer.android.com/guide/topics/resources/providing-resources.html
In practice • Providediffernet layout for different screens and orientations - backed by the same activity • Provide a different Activity class for a different device/layout. Exampleone for phone and one for tablet
Dispatch Activity idiom PhoneActivity New Intent DispatchActivity (condition) Intent TabletActivity New Intent
Conclusion • The Android OS and devicesareboth forward- and backwardscompatible in regard to OS versions • Android has excellent support for layout ondeviceswith different screen sizes and densities • By usingtheActionbarSherlock/Fragment activitiesyoucanwritecodethatuse fragments and deployontablets and phones • By usingActionbarSherlockyoucangetthe «ICS look» onyour Android 1.X + devicestoday. Includingthekindle fire.
“I am an old man and have known a great many troubles, but most of them never happened” – Mark Twain