Android屏幕密度(Density)和分辨率的解释

HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120
density值表示每英寸有多少个显示点,与分辨率是两个概念。

不同density下屏幕 分辨率信息,以480dip*800dip的WVGA(density=240)为例

density=120时 屏幕实际分辨率为240px*400px (两个点对应一个分辨率)
状态栏和标题栏高各19px或者25dip 
横屏是屏幕宽度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


apk的资源包中,当屏幕density=240时使用hdpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位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

你可以从DisplayMetrics中取得有关展示的信息。
DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
虽然Android不会使用直接的像素映射,它使用了独立的像素密度量化值,然后扩展实际的屏幕尺寸到这些独立的手工量化值。因此,密度的属性将是那些常量之一(120,160,或240 dpi)。
如果您需要的实际密度(对于一个OpenGL应用程序也许)你可以分别从横向和纵向得到它的xdpi和ydpi属性密度

这段代码应该可以:
DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int width = dm.widthPixels; //320 
int height = dm.heightPixels; //480 
获取dpi的代码:
DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
// will either be DENSITY_LOW, DENSITY_MEDIUM or DENSITY_HIGH 
int dpiClassification = dm.densityDpi; 
// these will return the actual dpi horizontally and vertically 
float xDpi = dm.xdpi; 
float yDpi = dm.ydpi; 

http://blog.csdn.net/sakura41/archive/2010/07/02/5709291.aspx

http://chuangxinren.com/read.php?tid=367&page=e&fpage=1

http://blog.csdn.net/sakura41/archive/2010/07/02/5709291.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值