android 屏幕密度和资源的关系

一、概念介绍:
1、density值表示每英寸有多少个显示点,与分辨率是两个概念。
不同density下屏幕 分辨率信息,以480*800的WVGA(density=240)
density=120时 屏幕实际分辨率为240*400 (两个点对应一个分辨率)

横屏是屏幕宽度400px 或者800dip,工作区域高度211px或者480dip
竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dip
density=160时 屏幕实际分辨率为320px*533px (3个点对应两个分辨率)
状态栏和标题栏高个25px或者25dip
横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者480dip
竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip

density=240时 屏幕实际分辨率为480px*800px (一个点对于一个分辨率)
状态栏和标题栏高个38px或者25dip
横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者480dip
竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip

2、apk的资源包中,当屏幕density=240时使用hdpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。


3、不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位dip,少使用px
屏幕             宽度          高度           尺寸              大小        密度      
                                                                           
          Type           (Pixels)     (Pixels)   Range (inches)    Size    Group
                                                                          
          QVGA             240          320        2.6 - 3.0         Small       Low
          WQVGA         240          400        3.2 - 3.5         Normal     Low
          FWQVGA       240          432        3.5 - 3.8         Normal     Low
          HVGA             320          480        3.0 - 3.5         Normal     Medium
          WVGA           480          800        3.3 - 4.0         Normal     High
           FWVGA         480          854        3.5 - 4.0         Normal     High
          WVGA           480          800        4.8 - 5.5          Large      Medium
          FWVGA         480          854         5.0 - 5.8         Large      Medium

二、如何做到自适应屏幕大小呢?
1)界面布局方面
   需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout-small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间)
2)图片资源方面
  需要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
Android有个自动匹配机制去选择对应的布局和图片资源

三、如何设计UI?
1、美工按某一尺寸设计效果图,一般是720p或1080p,其他尺寸可以不设计;
2、根据美工的设计计算出图片的原始尺寸,这里要用到屏幕密度,比如某1080p得手机像素密度480,那怎么计算远程尺寸(密度为160得尺寸)呢?
美工的某一图片60X90,是按1080p设计的,那计算出来的原始尺寸是20X30,在720p上显示大小为:40X60。
3、四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)

android 屏幕密度和资源的关系

一般情况下的普通屏幕对应关系:
名称 像素密度范围
mdpi 120dpi~160dpi
hdpi 160dpi~240dpi
xhdpi 240dpi~320dpi
xxhdpi 320dpi~480dpi
xxxhdpi 480dpi~640dpi

"HVGA    mdpi"
"WVGA   hdpi "
"FWVGA hdpi "
"QHD      hdpi "
"720P     xhdpi"
"1080P   xxhdpi "
美工按那个尺寸设计的,就防止到那个文件夹下,比如美工是按1080p设计的,就将截图放到xxhdpi文件夹下;

参考资料:
1、google官方给的关于屏幕适配的文章介绍(翻译篇):
http://hukai.me/android-training-course-in-chinese/basics/supporting-devices/screens.html
2、像素密度获取参考:http://gqdy365.iteye.com/admin/blogs/1569712
3、http://blog.csdn.net/zhaokaiqiang1992/article/details/45419023

你可能感兴趣的:(android)