Android - dev:mobile

stuckwarmersΚινητά – Ασύρματες Τεχνολογίες

14 Δεκ 2013 (πριν από 3 χρόνια και 7 μήνες)

196 εμφανίσεις

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