tackling android fragmentation dev:mobile 2012 @glennbech, inmeta consulting 16 klocs – not rocket...

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

Upload: gwendolyn-wheatley

Post on 02-Apr-2015

216 views

Category:

Documents


1 download

TRANSCRIPT

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

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 16 klocs – not rocket science

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

Page 3: Tackling Android Fragmentation Dev:Mobile 2012 @Glennbech, Inmeta consulting 16 klocs – not rocket science
Page 4: Tackling Android Fragmentation Dev:Mobile 2012 @Glennbech, Inmeta consulting 16 klocs – not rocket science
Page 5: Tackling Android Fragmentation Dev:Mobile 2012 @Glennbech, Inmeta consulting 16 klocs – not rocket science

Nairobi

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

HTC 3G SLIDE

On saleMay 2010

Got GingerbreadMay 2011

X

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

Situation report June 2012Situation 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 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 16 klocs – not rocket science

WHO CARES?

Page 10: Tackling Android Fragmentation Dev:Mobile 2012 @Glennbech, Inmeta consulting 16 klocs – not rocket science
Page 11: Tackling Android Fragmentation Dev:Mobile 2012 @Glennbech, Inmeta consulting 16 klocs – not rocket science
Page 12: Tackling Android Fragmentation Dev:Mobile 2012 @Glennbech, Inmeta consulting 16 klocs – not rocket science

AgendaAgenda

«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 16 klocs – not rocket science

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 16 klocs – not rocket science

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 16 klocs – not rocket science

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

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

Android versions

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

Situation report June 2012Situation 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 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 16 klocs – not rocket science

Androidmanifest.xmlAndroidmanifest.xml

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

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

Example. Hello worldExample. Hello world

public 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 16 klocs – not rocket science

Example. Menu.xmlExample. 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 16 klocs – not rocket science

ICS Gingrerbread

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

Androidmanifest.xmlAndroidmanifest.xml

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

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

ICS Gingrerbread

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

Android Support LibrariesAndroid 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 16 klocs – not rocket science

Limitations of the support librariesLimitations 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 16 klocs – not rocket science

ActionbarSherlockActionbarSherlock

• 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 16 klocs – not rocket science

ActionbarSherlock #1 IDEActionbarSherlock #1 IDE

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

Hello worldHello world

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

A quick summary 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 16 klocs – not rocket science

Fragments

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

Fragments crash courseFragments crash course

WHAT

• 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 16 klocs – not rocket science

Why - ReuseWhy - Reuse

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

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

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 16 klocs – not rocket science

Using fragments - example Using fragments - example

• Declared in layout

• Added/removed from code using FragmentManager

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

Extreme client programming

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

Density and Size Density and Size

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

HTC Sensation

Button (100dpx100dp)

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

Samsung Galaxy Tab 10.1

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

Huawei IDEOS

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

Definitions 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 16 klocs – not rocket science

Best Match layout picking Best Match layout picking

• Excellent support for providing resources based on device configuration

• Versions

• mcc310-mnc004 (US/Verizon)

• Car/desk (docking)

• Night mode

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

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

In practiceIn 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 16 klocs – not rocket science
Page 45: Tackling Android Fragmentation Dev:Mobile 2012 @Glennbech, Inmeta consulting 16 klocs – not rocket science

Dispatch Activity idiomDispatch Activity idiom

DispatchActivity

(condition)

PhoneActivity

TabletActivity

Intent

New Intent

New Intent

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

ConclusionConclusion

• 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 16 klocs – not rocket science

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