一、相关概念

1.   android支持density的版本
Android
1.6版本开始支持density(对应API Level 4)

2.   density
density
值表示每英寸有多少个显示点,比如240就是每英寸240个点,它是针对设备的属性,它是屏幕物理长宽的扩展,给屏幕设置为低密度显示的内容少,同样的条件下,密度小的屏幕显示同样的按钮看起来大,高密度的看起来小

3.   分辨率
是整个屏是多少点,比如800x480,它是对于软件来说的显示单位,以px为单位的点

4.   设置density的效果
不同density下屏幕分辨率信息,以480dip*800dipWVGA为例
density=120
时 屏幕实际分辨率为240px*400px
density=160
时 屏幕实际分辨率为
320px*533px
density=240
时 屏幕实际分辨率为480px*800px

二、相关代码及设置

1.   AndroidManifest.xml
<supports-screens android:anyDensity="true"/>
<uses-sdk android:minSdkVersion="4"></uses-sdk>

2.   资源目录名(android 2.0以后)
res/xxx-hdpi  
density240时,使用此目录下的资源
res/xxx-mdpi  
density160时,使用此目录下的资源
res/xxx-ldpi  
density120时,使用此目录下的资源
res/xxx       
不常后缀,为默认设置,同xxx-mdpi
如果硬件相应的desity的目录不存在,系统会利用存在的density自动乘以系数计算出相应的density

3.   资源单位(layout xml文件中定义大小的单位)

1)       dp=dip=dx   (Density independent pixel)
基于屏幕密度的抽象单位,布局时尽量使用单位dip,少使用px
dip
应用用于定义UI的虚拟单位,用于说明与密度无关的尺寸和位置。
dip
点等价于160dpi密度中的一个物理点,密度由平台决定,换算公式如下
pixels = dips * (density / 160)160DPI的密度系数是1
例如240 dpi的屏幕,1dip点等于1.5个物理点

2)       px
设置的绝对点数, 如果使用更高density的系统, 控件就会变小

三、设置density
设置系统变量hw.lcd.density,可设置density

四、实现density的关键源码

1.   BitmapFactory.java

2.   ComptibilityInfo.java

五、参考

1.   http://www.cnmsdn.com/html/201005/1275315384ID5529.html

posted on 2010-12-17 19:42  xieyan0811  阅读(52)  评论(0编辑  收藏  举报