How to deal with Phones of different screen size?

deepak - Sun Feb 26 2012 23:19:51 GMT-0500 (EST)

Screen Size difference causes issues in Application

Screen Size difference causes issues in Application

deepak - Sun Feb 26 2012 23:26:58 GMT-0500 (EST)

Familiarize the Key Terms

Screen size
Actual physical size, measured as the screen's diagonal.
For simplicity, Android groups all actual screen 
sizes into four generalized sizes: 
small, normal, large, and extra large.

Screen density
The quantity of pixels within a physical area of the screen; 
usually referred to as dpi (dots per inch). 
For example, a "low" density screen has fewer pixels 
within a given physical area, compared to a
 "normal" or "high" density screen.
For simplicity, 
Android groups all actual screen densities into 
four generalized densities: 
low, medium, high, and extra high.

The orientation of the screen from the user's point of view. 
This is either landscape or portrait, 
meaning that the screen's aspect ratio is either 
wide or tall, respectively. Be aware that not only do 
different devices operate in different orientations 
by default, but the orientation can change at 
runtime when the user rotates the device.

The total number of physical pixels on a screen. 
When adding support for multiple screens, 
applications do not work directly with resolution; 
applications should be concerned only with 
screen size and density, as specified by the 
generalized size and density groups.

Density-independent pixel (dp)
A virtual pixel unit that you should use when defining
 UI layout, to express layout dimensions or position
 in a density-independent way.

deepak - Sun Feb 26 2012 23:29:07 GMT-0500 (EST)

Generalized Screen Sizes for Android

These are deprecated from API level 13

deepak - Sun Feb 26 2012 23:31:57 GMT-0500 (EST)

Screen Size and Resolution

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

deepak - Sun Feb 26 2012 23:35:06 GMT-0500 (EST)

Configuration Qualifiers

What are Configuration Qualifiers?

deepak - Sun Feb 26 2012 23:35:57 GMT-0500 (EST)

Answer is

A configuration qualifier is a string that you can append to a 
resource directory in your Android project and 
specifies the configuration for which the resources inside are designed

deepak - Sun Feb 26 2012 23:42:58 GMT-0500 (EST)

How to use Configuration Qualifiers?

  1. Create a new directory in your project's res/ directory and name it using the format: <resources_name>-<qualifier>
    • <resources_name> is the standard resource name (such as drawable or layout).
    • <qualifier> is a configuration qualifier from table 1, below, specifying the screen configuration for which these resources are to be used (such as hdpi or xlarge).
    You can use more than one <qualifier> at a time? simply separate each qualifier with a dash.
  2. Save the appropriate configuration-specific resources in this new directory. The resource files must be named exactly the same as the default resource files.

deepak - Sun Feb 26 2012 23:48:50 GMT-0500 (EST)

Qualifiers types

Screen characteristic Qualifier Description
Size small Resources for small size screens.
normal Resources for normal size screens.
(This is the baseline size.)
large Resources for large size screens.
xlarge Resources for extra large size screens.
Density ldpi Resources for low-density (ldpi)
screens (~120dpi).
mdpi Resources for medium-density (mdpi)
screens (~160dpi).
(This is the baseline density.)
hdpi Resources for high-density (hdpi)
screens (~240dpi).
xhdpi Resources for extra high-density (xhdpi)
screens (~320dpi).
nodpi Resources for all densities. These are
density-independent resources.
The system does not
scale resources tagged with this qualifier,
regardless of the current screen's density.
tvdpi Resources for screens somewhere between
mdpi and hdpi; approximately 213dpi. This is not
considered a "primary" density group. It is mostly
intended for televisions and most apps shouldn't
need it?providing mdpi and hdpi resources is
sufficient for most apps and the system will
scale them as appropriate. If you find it necessary
to provide tvdpi resources, you should size them
at a factor of 1.33*mdpi. For example,
a 100px x 100px image for mdpi screens
should be 133px x 133px for tvdpi.
Orientation land Resources for screens in the landscape
orientation (wide aspect ratio).
port Resources for screens in the portrait
orientation (tall aspect ratio).
Aspect ratio long Resources for screens that have a
significantly taller or wider aspect ratio
(when in portrait
or landscape orientation, respectively) than
the baseline screen configuration.
notlong Resources for use screens that have an
aspect ratio that is similar to the baseline screen

deepak - Sun Feb 26 2012 23:51:57 GMT-0500 (EST)

How to handle layouts for Devices with different screen size?

1) As a practice try not to hard code any width/height 
properties to an absolute value.

2) Create different layout folders for different sizes.
res/layout/my_layout.xml        // normal screen size ("default")
res/layout-small/my_layout.xml   // small screen size
res/layout-large/my_layout.xml    // large screen size
res/layout-xlarge/my_layout.xml   //extra large screen size

deepak - Sun Feb 26 2012 23:53:06 GMT-0500 (EST)

How to handle images with different Density?

1) Create different drawable folders for different densities.
res/drawable-mdpi/my_icon.png       // medium density
res/drawable-hdpi/my_icon.png        // high density
res/drawable-xhdpi/my_icon.png       // extra high density

deepak - Sun Feb 26 2012 23:54:19 GMT-0500 (EST)

How to add the layout for Tablets?

Add the layouts to the layouts-xlarge folder.