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
On sale
May 2010
Got
Gingerbread
May 2011
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
WHO
CARES?
«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
»
ICS/
Honeycomb
tabs
ActionBar
& Home
Navigation
Action
Items
ViewPager
https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo
Contextual
Actionbar
https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo
Tab
N
avigation
…
with
ListView
multiselect
https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo
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
<
uses
-
sdk
android
:
minSdkVersion
=”7"
android
:
targetSdkVersion
="
14”
/>
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
;
}
}
<
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
<
uses
-
sdk
android
:
minSdkVersion
=”
7
"
android
:
targetSdkVersion
="10”
/>
ICS
Gingrerbread
•
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
•
No action bar
•
Code «
infection
»
•
Cannot
extend
MapActivity
since
you
have to
extends
custom
Activity
class
•
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
•
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.
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
http://developer.android.com/guide/topics/fundamentals/fragments.html
Actionbar
uses
TabListeners
for
tab
navigation
onTabSelected
(
ActionBar.Tab
tab,
FragmentTransaction
ft
)
Source:
http://developer.android.com/reference/android/app/ActionBar.TabListener.html
•
Declared in layout
•
Added/removed from code using
FragmentManager
HTC
Sensation
Button
(100dpx
100dp)
Samsung Galaxy Tab 10.1
Huawei
IDEOS
•
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
•
Excellent
support for
providing
resources
based
on
device
configuration
•
V
ersions
•
mcc310
-
mnc004
(US/Verizon)
•
Car
/desk (
docking
)
•
Night
mode
•
ETC
Source:
http://developer.android.com/guide/topics/resources/providing
-
resources.html
•
Provide
differnet
layout for different screens and
orientations
-
backed
by
the
same
activity
•
Provide
a different Activity
class
for a different
device
/layout.
E
xample
one
for
phone
and
one
for
tablet
Dispatch
Activity
(
condition
)
Phone
Activity
Tablet
Activity
Intent
New
Intent
New
Intent
•
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.
“I
am an old man and have
known a great many troubles,
but most of them never
happened”
–
Mark Twain
Enter the password to open this PDF file:
File name:
-
File size:
-
Title:
-
Author:
-
Subject:
-
Keywords:
-
Creation Date:
-
Modification Date:
-
Creator:
-
PDF Producer:
-
PDF Version:
-
Page Count:
-
Preparing document for printing…
0%
Commentaires 0
Connectez-vous pour poster un commentaire