tackling android fragmentation dev : mobile 2012 @ glennbech , inmeta consulting

48
Tackling Android Fragmentation Dev:Mobile 2012 @Glennbech , Inmeta consulting 16 klocs – not rocket science

Upload: yadid

Post on 23-Feb-2016

37 views

Category:

Documents


0 download

DESCRIPTION

Tackling Android Fragmentation Dev : Mobile 2012 @ Glennbech , Inmeta consulting. 16 klocs – not rocket science. Source: Twitter / http ://en.wikipedia.org/wiki/Mobile_operating_system#Market_share. Nairobi. HTC 3G SLIDE. X. Got Gingerbread May 2011. On sale May 2010. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Tackling Android Fragmentation

Dev:Mobile 2012 @Glennbech , Inmeta consulting

16 klocs – not rocket science

Page 2: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Source: Twitter / http://en.wikipedia.org/wiki/Mobile_operating_system#Market_share

Page 3: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting
Page 4: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting
Page 5: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Nairobi

Page 6: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting
Page 7: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

HTC 3G SLIDE

On saleMay 2010

Got GingerbreadMay 2011

X

Page 8: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Situation report June 2012Android• ICS 7.3% (All versions)• Honeycomb 2.7%• Gingerbread (2.3) dominant @ 65%• Froyo (2.2) still at 19.1 %• As of February 2012 Phones with no

ICS upgrade plan still sold• This will continue

iOS• 61% on iOS 5 or above in 15. days!

Source: http://developer.android.com/resources/dashboard/platform-versions.html

Page 9: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

WHO CARES?

Page 10: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting
Page 11: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting
Page 12: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Agenda

«Prove that it is feasable, and not overly difficult to, write single APK, native android apps that works well across android versions and form

factors»

Page 13: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

ICS/Honeycomb

tabs

ActionBar& Home

Navigation

Action Items

ViewPager

https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo

Page 14: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

ContextualActionbar

https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo

Tab Navigation

… with ListView

multiselect

Page 15: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo

Page 16: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Android versions

Page 17: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Situation report June 2012Android• ICS 7.3% (All versions)• Honeycomb 2.7%• Gingerbread (2.3) dominant @ 65%• Froyo (2.2) still at 19.1 %• As of February 2012 Phones with no

ICS upgrade plan still sold• This will continue

iOS• 61% on iOS 5 or above in 15. days!

Source: http://developer.android.com/resources/dashboard/platform-versions.html

Page 18: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Androidmanifest.xml

<uses-sdk android:minSdkVersion=”7"android:targetSdkVersion="14” />

Page 19: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Example. Hello worldpublic class TargetSDKVersionExample extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }

@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; }}

Page 20: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

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>

Page 21: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

ICS Gingrerbread

Page 22: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Androidmanifest.xml

<uses-sdk android:minSdkVersion=”7"android:targetSdkVersion="10” />

Page 23: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

ICS Gingrerbread

Page 24: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Android Support Libraries

• Official Android 3 & 4 features backported• Very simple to use; download using SDK manager and include

JAR file in project Includes • Fragment API & DialogFragment• Loader API• ViewPager, Pager Adapter & FragmentPagerAdapter• SearchView

• Simple Actionbar implementation provided in samples

source: http://developer.android.com/sdk/compatibility-library.html#SettingUp

Page 25: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Limitations of the support libraries• No action bar

• Code «infection»

• Cannot extend MapActivity since you have to extends custom Activity class

Page 26: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

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 / ActionMode

The ICS feature "split action bar“

• Plugin for MapActvity (!)• www.actionbarsherlock.com• Apache License Version 2.0

Page 27: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

ActionbarSherlock #1 IDE

Page 28: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Hello world

Page 29: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting
Page 30: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

A quick summary

• We have used the support libraries, through ActionBarSherlock to get ICS looking apps on pre-ICS phones (back to 1.6 supported)

• The price• Must use a custom theme• Must extends SherlockActivity classes• Must use overloaded methods, and use getSuppportMenuInflater() etc.

Page 31: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Fragments

Page 32: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Fragments crash courseWHAT• Introduced in Android 3.0 • Reusable UI components• Have their own lifecycle• Can add their own items to actionbar etc. WHY• Code Reuse• Fragments are integrated into the ICS SDK

Page 33: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Why - Reuse

http://developer.android.com/guide/topics/fundamentals/fragments.html

Page 34: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Actionbar uses TabListeners for tab navigation

onTabSelected(ActionBar.Tab tab, FragmentTransaction ft)

Source: http://developer.android.com/reference/android/app/ActionBar.TabListener.html

Page 35: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Using fragments - example • Declared in layout• Added/removed from code using FragmentManager

Page 36: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Extreme client programming

Page 37: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Density and Size

Page 38: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

HTC Sensation

Button (100dpx100dp)

Page 39: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Samsung Galaxy Tab 10.1

Page 40: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Huawei IDEOS

Page 41: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

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

Page 42: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Best Match layout picking

• Excellent support for providing resources based on device configuration

• Versions• mcc310-mnc004 (US/Verizon)• Car/desk (docking)• Night mode• ETC

Source: http://developer.android.com/guide/topics/resources/providing-resources.html

Page 43: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

In practice

• Provide differnet layout for different screens and orientations - backed by the same activity

• Provide a different Activity class for a different device/layout. Example one for phone and one for tablet

Page 44: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting
Page 45: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Dispatch Activity idiom

DispatchActivity

(condition)

PhoneActivity

TabletActivity

Intent

New Intent

New Intent

Page 46: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting
Page 47: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

Conclusion

• The Android OS and devices are both forward- and backwards compatible in regard to OS versions

• Android has excellent support for layout on devices with different screen sizes and densities

• By using the ActionbarSherlock/Fragment activities you can write code that use fragments and deploy on tablets and phones

• By using ActionbarSherlock you can get the «ICS look» on your Android 1.X + devices today. Including the kindle fire.

Page 48: Tackling Android  Fragmentation Dev : Mobile  2012  @ Glennbech  , Inmeta  consulting

“I am an old man and have known a great many troubles, but most of them never happened” – Mark Twain