15. Generalized SIZE definition
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. (Android
does not currently support screens smaller than this.)
17. Some model
device RES. px SIZE DPI G.DPI RES. dp G.SIZE
HTC wildfire 240*320 2.8 in 140dpi ldpi 320*428dp small
HTC hero 320*480 3.2 in 180dpi mdpi 320*480dp normal
HTC desire 480*800 3.7 in 252dpi hdpi 320*533dp normal
Dell Streak 480*800 5.0 in 186dp mdpi 480*800dp large
HTC sensation 540*960 4.3 in 256dpi hdpi 360*640dp normal
Galaxy note 800*1280 5.3 in 284dpi xhdpi 400*640dp normal
HTC Flyer 600*1024 7.0 in 170dpi mdpi 600*1024dp large
Galaxy tab 600*1024 7.0 in 170dpi hdpi 400*682dp normal
Xoom 800*1280 10.1 in 150dpi mdpi 800*1280dp xlarge
18. DPI G.DPI
G.DPI mostly can be inferred from DPI
But some G.DPI may be very different with the real
dpi.
Samsung galaxy tab has HDPI, but its real dpi is 170.
G.DPI, xdpi, ydpi are set by manufacturers.
Manufacturer will choose a G.DPI to make its UI
looks the best.
19. SIZE G.SIZE
Only SIZE is not enough to get G.SIZE.
G.SIZE can be infer from the RES. in dp unit.
RES.(px) + G.DPI RES.(dp) G.SIZE
21. Effect of G.DPI
Developers do not need to care about real density.
Different RES.(px). are aggregated to RES.(dp),
which has a much smaller range.
For example, some small/normal size device.
device RES. px G.DPI RES. dp G.SIZE
HTC wildfire 240*320 ldpi 320*428dp small
HTC hero 320*480 mdpi 320*480dp normal
HTC desire 480*800 hdpi 320*533dp normal
HTC sensation 540*960 hdpi 360*640dp normal
Galaxy note 800*1280 xhdpi 400*640dp normal
22. Density independence
The Android system scales dp units and drawable
res to appropriate size based on the G.DPI.
For example, a Button(100*100dp) and a icon image
will looks nearly the same in different devices.
24. Handset features
Small and Normal devices take over 90%.
These devices are nearly all handset.
25. Handset qualifier
G.SIZE: small/normal
Default Orientation: portrait
RES.(dp): 426dp x 320dp - 640dp x 480dp.
26. How to support?
Develop a scalable app.
Use wrap_content, fill_parent.
Use dp not px.
Use LinearLayout/RelativeLayout, not AbsoluteLayout.
Provide different drawables for different dpi.
Use more 9-patch drawable.
…
29. The first guideline
Develop one app for all devices.
There is no dividing line between handsets and tablets.
Maintaining multi apps for different devices is not working
well.
30. Official Guidelines
Build your activity designs based on fragments
Use the action bar
Implement flexible layouts
31. Implement flexible layouts
How to implement flexible layouts in one app?
Official answer: Think like a web designer.
32. Responsive web design
Build something that works on any possible width or
device instead of something that works on all current
widths and devices.
Use css3 media queries to implement.
Usually combine with fluid web design.
33. Media queries
Sample:
<link media="screen and (max-device-width: 800px)"
href=“common.css" />
Media queries contain two components:
A media type. (screen, print)
A media feature(max-device-width) and query
value(800px).
Use media queries to filter css depend on device info.
34. Website demo
http://www.alistapart.com/d/responsive-web-
design/ex/ex-site-FINAL.html
Use 3 media queries to divide consistent width to 4
part.
@media (max-width: 400px)
@media (max-width: 600px)
@media (min-width: 1300px)
35. Responsive mobile design
Same content, same logical, but different
representation.
Use configuration qualifiers, especially screen size
qualifiers to provide different layout for different
devices.
37. New screen size qualifiers
Smallest Width
sw600dp
Available Width
w600dp
Available height
h600dp
38. Web design vs Android design
CSS vs Layout
CSS pixel vs Dip
Ems vs Sp
CSS3 media query vs Configuration qualifiers
Fluid web design vs Scalable design
Responsive web design vs Responsive mobile
design
39. App demos
IOSched2011
IOSched2012
Google Play
51. Android UI design patterns
A UI design pattern describes a general solution to a
recurring question.
Mature UI patterns have flexible layouts towards
different devices. They are self-adaptive to multi-
screen.
Here we introduce some useful patterns.
Action Bar
Workspace
Dashboard
Slide navigation
52. Action Bar
Replace the old TitleBar.
Many functions:
Menu
Search
Navigation
Tab
Spinner
Up
Action Mode
Split Action Bar
62. Conclusion
Density independence in android could handles most
of work to adapt apps to each devices.
What you should do is supporting flexible, dynamic
layouts.(think like a web designer)
Remember developing one app for all devices.
Follow platform guideline and use more UI design
patterns.