83
Android Development for Different Screens and Devices Rohit Ghatol

Salt march 2011-android development for different screens and devices

Embed Size (px)

DESCRIPTION

Salt march 2011-android development for different screens and devices

Citation preview

Page 1: Salt march 2011-android development for different screens and devices

Android Development for Different Screens and Devices

Rohit Ghatol

Page 2: Salt march 2011-android development for different screens and devices

About MeRohit Ghatol

1. Architect @QuickOffice2. Project Mgr @Synerzip3. Certified Scrum Master4. Author “Beginning PhoneGap” @Apress5. Founder TechNext Pune (Pune Developer

Community)

LinkedIn ProfileLinkedIn Profile

Page 3: Salt march 2011-android development for different screens and devices

Topics

• Understanding UI Terms and Concepts• Building for Different Screen Sizes• Building for Different Tablets and Phone• Getting ready for Ice Cream Sandwich• Making your app run on all devices• Reference Material

3

Page 4: Salt march 2011-android development for different screens and devices

Diversity on Android

Android Devices•Handsets•Tablets•TV

4

Page 5: Salt march 2011-android development for different screens and devices

Diversity on Android

• Screen– Screen Size (2 inch to 50 inch)– DPI (120 – 320 )

• Optional Hardware (Telephony, Camera, GPS)• User Interaction

– Touch, DPAD, Trackball, Keyboard

5

Page 6: Salt march 2011-android development for different screens and devices

Making App work for different Screens

6

Page 7: Salt march 2011-android development for different screens and devices

UI Terms and Concepts

7

Page 8: Salt march 2011-android development for different screens and devices

Screen Size

8

Measured in Diagonal

SmallSmall

MediumMedium

LargeLarge

Extra LargeExtra Large

Categories

Page 9: Salt march 2011-android development for different screens and devices

Screen Density

9

CategoriesDPI – Dots per inches

Low Normal

High Extra High

Page 10: Salt march 2011-android development for different screens and devices

Orientation

10

Portrait Landscape

Page 11: Salt march 2011-android development for different screens and devices

Density Independent Pixel (dp)

11

160 DPI Screen 240 DPI Screen

1 dp = 1.5 pixels1 dp = 1 pixels

Page 12: Salt march 2011-android development for different screens and devices

Range

12

• 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 13: Salt march 2011-android development for different screens and devices

Density Independence

13

px

dp

Page 14: Salt march 2011-android development for different screens and devices

Building for Different Screen Sizes

14

Page 15: Salt march 2011-android development for different screens and devices

<supports-screen>

15

Page 16: Salt march 2011-android development for different screens and devices

Screen Compatibility Mode

16

For Android 3.2 and above

Page 17: Salt march 2011-android development for different screens and devices

Screen Compatibility Mode

17

For Android 3.2 and above

Stretch to Fill Zoom to Fill

Page 18: Salt march 2011-android development for different screens and devices

18

Page 19: Salt march 2011-android development for different screens and devices

Compatibility Modes

android:requiresSmallestWidthDp•Small Width Required for this application to be installed on the given device•Currently Android Market does not use it

19

Page 20: Salt march 2011-android development for different screens and devices

Compatibility Modes

android:compatibleWidthLimitDp•Small Width supported by the application.•If Smallest Side of Device > compatibleWidthLimitDp, user is offered to run application in Compatibility mode

20

Page 21: Salt march 2011-android development for different screens and devices

Compatibility Modes

android:largestWidthLimitDpSmall Width supported by the application.•If Smallest Side of Device > largestWidthLimitDp, application is forced run application in Compatibility mode (without any option)

21

Page 22: Salt march 2011-android development for different screens and devices

Different Layouts

22

Page 23: Salt march 2011-android development for different screens and devices

UI Guidelines

• Keep Business logic separate• Keep Views independent• Keep Navigation logic out of Views

23

Page 24: Salt march 2011-android development for different screens and devices

< Android 3.1

• layout-small• layout-normal• layout-large• layout-xlarge

24

Page 25: Salt march 2011-android development for different screens and devices

>= Android 3.2

• layout-sw600dp• layout-w720dp• layout-h500dp

25http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

Now you can declare which layout to use at which width and not more vague partitions like layout-small, layout-normal, layout-large and layout-xlarge

Page 26: Salt march 2011-android development for different screens and devices

Different Bitmaps

26

Page 27: Salt march 2011-android development for different screens and devices

Drawable-Resolution

• drawable• drawble-nodpi – Not Scaled at all• drawable-ldpi ~ 120 dpi (.75x scale)• drawable-mdpi ~ 160 dpi (baseline scale)• drawable-hdpi ~ 240 dpi (1.5x scale)• drawable-xhdpi ~ 320 dpi (2x scale)

27

Page 28: Salt march 2011-android development for different screens and devices

Icon GuideLines

28

As of Android 3.0, Options menu has been superseded by Action bar

For Android 3.0+

Page 29: Salt march 2011-android development for different screens and devices

Menu Icons Guidelines

29For Android 2.3

Page 30: Salt march 2011-android development for different screens and devices

Status Bar Icons

30For Android 3.0+

Page 31: Salt march 2011-android development for different screens and devices

Status Bar Icons

31For Android 2.3

Page 32: Salt march 2011-android development for different screens and devices

Nine Patch Images

32

Page 33: Salt march 2011-android development for different screens and devices

Nine Patch Images

33

Page 34: Salt march 2011-android development for different screens and devices

Shapes XML

34

Page 35: Salt march 2011-android development for different screens and devices

35

Best part is these are Density Independent

Page 36: Salt march 2011-android development for different screens and devices

MultiResolution App

36

Page 37: Salt march 2011-android development for different screens and devices

37

Page 38: Salt march 2011-android development for different screens and devices

38

Page 39: Salt march 2011-android development for different screens and devices

Config Qualifier

39

Page 40: Salt march 2011-android development for different screens and devices

40

1. Mcc & mnc

2. Lang & Regionen,fr,en-rUS

3.Smallest WidthSw320dp,Sw600dp,sw720dp

4.Available WidthW720dp,w1024dp

5.Available HeightH720dp,h1024dp

6. ScreenSizesmall,normal,large,xlarge

7.Screen Aspectlong, notlong

8.Screen Orientport,land

9.Doc Modecar, desk

10.Night Modenight,notnight

11. DPIldpi,mdpi,ldpi,xldpi,tvdpi,nodpi

12.Touch Typenotouchstylusfinger

13.Keyboard Availabilitykeysexposedkeyshiddenkeyssoft

14.Primary Text Input Methodnokeysqwerty12key

15.Navigation key Availabilitynavexposednavhidden

16. Primary NonTouch Input Method

nonavdpadtrackballwheel

17. API Levelv3v4v7

Page 41: Salt march 2011-android development for different screens and devices

How Android finds best resource?

41

Page 42: Salt march 2011-android development for different screens and devices

42

Page 43: Salt march 2011-android development for different screens and devices

Available Resources

drawable/drawable-en/drawable-fr-rCA/drawable-en-port/drawable-en-notouch-12key/drawable-port-ldpi/drawable-port-notouch-12key/

43

Page 44: Salt march 2011-android development for different screens and devices

Device Configuration

Locale = en-GB Screen orientation = port Screen pixel density = hdpi Touchscreen type = notouch Primary text input method = 12key

44

Page 45: Salt march 2011-android development for different screens and devices

Step 1 Remove Contradictory Entry

45

Page 46: Salt march 2011-android development for different screens and devices

Step 2-5 Start Filtering

Locale = en-GB Screen orientation = port Screen pixel density = hdpi Touchscreen type = notouch Primary text input method = 12key

46

22

88

1111

1212

1414

## Config Precedence order

Page 47: Salt march 2011-android development for different screens and devices

Step 2- 5 Filter by Language

47

Page 48: Salt march 2011-android development for different screens and devices

Step 2-5 Filter by Orientation

48

Page 49: Salt march 2011-android development for different screens and devices

Building for Tablets & Handsets

49

Page 50: Salt march 2011-android development for different screens and devices

HoneyComb UI

New UI Elements•Fragments•Action Bar

50

Page 51: Salt march 2011-android development for different screens and devices

Before Fragments

51

Page 52: Salt march 2011-android development for different screens and devices

Before Fragments

52

Page 53: Salt march 2011-android development for different screens and devices

Let’s see some code

53

Page 54: Salt march 2011-android development for different screens and devices

Fragments Example

54

ActionBar

Fragment

ListFragment

Page 55: Salt march 2011-android development for different screens and devices

55Portrait Landscape

Afghanistan….Bhutan….Cuba….Germany

Afghanistan….Bhutan….Cuba….Germany

This Country is a Independent

State. The Capital is Kabul.

This Country is a Independent

State. The Capital is Kabul.

CountryList

CountryInfo

Afghanistan….Bhutan….Cuba….Germany

Afghanistan….Bhutan….Cuba….Germany

This Country is a Independent

State. The Capital is Kabul.

This Country is a Independent

State. The Capital is Kabul.

Activity

Fragment

Page 56: Salt march 2011-android development for different screens and devices

Afghanistan….Bhutan….Cuba….Germany

Afghanistan….Bhutan….Cuba….Germany

This Country is a Independent

State. The Capital is Kabul.

This Country is a Independent

State. The Capital is Kabul.

CountryListFragment CountryInfoFragment

OnCountrySelectedListenerOnCountrySelectedListener

void onCountrySelect(int position)

Page 57: Salt march 2011-android development for different screens and devices

Afghanistan….Bhutan….Cuba….Germany

Afghanistan….Bhutan….Cuba….Germany

CountryListFragment

OnCountrySelectedListenerOnCountrySelectedListener

void onCountrySelect(int position)

CountryListActivity

Country Select Event

Country Select Event

Page 58: Salt march 2011-android development for different screens and devices

58Portrait Landscape

Afghanistan….Bhutan….Cuba….Germany

Afghanistan….Bhutan….Cuba….Germany

This Country is a Independent

State. The Capital is Kabul.

This Country is a Independent

State. The Capital is Kabul.

CountryList

CountryInfo

Afghanistan….Bhutan….Cuba….Germany

Afghanistan….Bhutan….Cuba….Germany

This Country is a Independent

State. The Capital is Kabul.

This Country is a Independent

State. The Capital is Kabul.

Activity

Fragment

Send Intent

Directly Tell Fragment

Page 59: Salt march 2011-android development for different screens and devices

Let’s see some code

59

Page 60: Salt march 2011-android development for different screens and devices

ActionBar Example

60

Page 61: Salt march 2011-android development for different screens and devices

Let’s see some code

61

Page 62: Salt march 2011-android development for different screens and devices

But all this is for > Android 3.x

Welcome Android Compatibility Pack

62

Page 63: Salt march 2011-android development for different screens and devices

Android Compatibility Pack

• Provides limited support for HoneyComb widgets for pre 3.0 Android devices

• Support for Fragments present (with some api change)

• No Support for ActionBar

63

Page 64: Salt march 2011-android development for different screens and devices

Fragments on Android 2.x

64

Page 65: Salt march 2011-android development for different screens and devices

Let’s see some code

65

Page 66: Salt march 2011-android development for different screens and devices

What about ActionBar Support for Android 2.x

Welcome ActionBarSherlock

66

Page 67: Salt march 2011-android development for different screens and devices

ActionBarSherLock Example

67

Page 68: Salt march 2011-android development for different screens and devices

Let’s see some code

68

Page 69: Salt march 2011-android development for different screens and devices

Getting ready for Ice-cream sandwich

http://android-developers.blogspot.com/2011/09/

preparing-for-handsets.html

69

Page 70: Salt march 2011-android development for different screens and devices

What happens to Honey Comb Apps?

70

Make Apps Tablets Only Support Smaller Screens

Page 71: Salt march 2011-android development for different screens and devices

Make Apps Tablet Only

71

Page 72: Salt march 2011-android development for different screens and devices

Support Smaller Screens

72

Page 73: Salt march 2011-android development for different screens and devices

Support Smaller Screens

• Keep Business logic separate• Keep Views(Fragments) independent• Keep Navigation logic out of Views

(Fragments)

73

Page 74: Salt march 2011-android development for different screens and devices

ActionBar on Smaller Screens

• Use ifRoom instead of “always”• Provide icons for all action items and use

showAsAction=“ifRoom|withText”.

74

Page 75: Salt march 2011-android development for different screens and devices

ActionBar on Smaller Screens

75

Page 76: Salt march 2011-android development for different screens and devices

ListViews

• Use different layouts for list items for– Tablets (show more information)– Handsets (show less information)

76

Page 77: Salt march 2011-android development for different screens and devices

Making App work on all devices

77

Page 78: Salt march 2011-android development for different screens and devices

Maximum Reach, Assume nothing

78

Type/Capabilities

Telephony

2G/3G/4G

Wifi GPS Accelerometer/Compass

Camera

Phone Yes Yes Yes Yes Yes Yes

Tablets No Optional

Yes Yes Yes Yes

Google TV

No No Optional

No No Nohttp://www.google.com/events/developerday/2010/moscow/sessions/your-app-can-run-on-every-android.html

Page 79: Salt march 2011-android development for different screens and devices

Use <uses-feature> judiciary

In the Application Manifest: <uses-feature>•For any hardware your app uses •For any hardware which your app does NOT need to execute, explicitly specify a value of required=false•(Remember TV does not have telephony,GPS or Camera)

79

Page 80: Salt march 2011-android development for different screens and devices

Currently available Features to be declared by<uses-feature>:(see PackageManager class)

• CAMERA• CAMERA_AUTOFOCUS• CAMERA_FLASH• LOCATION• LOCATION_GPS• LOCATION_NETWORK• MICROPHONE• SENSOR_COMPASS• SENSOR_ACCELEROMETER• SENSOR_LIGHT SENSOR_PROXIMITY

• TELEPHONY • TELEPHONY_CDMA • TELEPHONY_GSM TOUCHSCREEN

TOUCHSCREEN_MULTITOUCH • TOUCHSCREEN_MULTITOUCH_DISTI

NCT• WIFI • BLUETOOTH

80

Page 81: Salt march 2011-android development for different screens and devices

Feature availability at runtime

• PackageManager.hasSystemFeature(FEATURE_NAME)

• Check if feature present then only expose the feature to end user (like menu item for it)

• Build a Degradable App

81

Page 82: Salt march 2011-android development for different screens and devices

Q & A

82

Page 83: Salt march 2011-android development for different screens and devices

More about Me• Twitter - http://twitter.com/#!/rohitghatol • TechGig -

http://www.techgig.com/rohitghatol • LinkedIn -

http://www.linkedin.com/in/rohitghatol• Presentations -

www.slideshare.net/rohitsghatol/ • YouTube Tutorials -

http://www.youtube.com/user/rohitssghatol