Android - dev:mobile 2014

advertisement
16 klocs – not rocket science
Tackling
Android Fragmentation
Dev:Mobile 2012 @Glennbech , Inmeta consulting
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»
ActionBar
& Home
Navigation
ICS/
Honeycomb
tabs
ViewPager
Action
Items
https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo
Tab
Navigation
Contextual
Actionbar
… with
ListView
multiselect
https://play.google.com/store/apps/details?id=com.glennbech.nutrinfo
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
onTabSelected(ActionBar.Tab tab,
FragmentTransaction ft)
Source: http://developer.android.com/reference/android/app/ActionBar.TabListener.html
Actionbar uses TabListeners for
tab navigation
•
•
Declared in layout
Added/removed from code using FragmentManager
Button
(100dpx
100dp)
HTC Sensation
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
Versions
mcc310mnc004 (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.
Example one for phone and one for tablet
Intent
New Intent
Phone
Activity
New Intent
Tablet
Activity
Dispatch
Activity
(condition)
•
•
•
•
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
Download