[转载]android显示单位sp,dip,px,pt,分辨率及density相关

sp:一般用于设置字体大小,最重要的特点是与屏幕密度无关,与scale无关。 
dip:等同于dp,通常用于设置控件长度和宽度,最重要特点也是与屏幕密度无关。 
px:像素,多用于设置宽度和长;pt:磅,多用于设置字体大小。 

分辨率:整个屏是多少点,比如800x480,它是对于软件来说的显示单位,以px为单位的点。 
density(密度)值表示每英寸有多少个显示点,与分辨率是两个概念。 
apk的资源包中, 
当屏幕density=240时使用hdpi标签的资源 
当屏幕density=160时,使用mdpi标签的资源 
当屏幕density=120时,使用ldpi标签的资源。 

一般android设置长度和宽度多用dip,设置字体大小多用sp. 
在屏幕密度为160,1dp=1px=1dip, 1pt = 160/72 sp 1pt = 1/72 英寸.当屏幕密度为240时,1dp=1dip=1.5px.

另外补充

获取屏幕硬件分辨率方法:

 

  1. TextView tv=(TextView)findViewById(R.id.tv);  
  2.         DisplayMetrics dm=new DisplayMetrics();  
  3.         getWindowManager().getDefaultDisplay().getMetrics(dm);  
  4.         float width=dm.widthPixels*dm.density;  
  5.         float height=dm.heightPixels*dm.density;  
  6.         tv.setText(width+"X"+height);  
 

其中dm.withPixels和dm.heightPixels得到的宽度和高度值都是以宽度为320为标准的,也就是说,不管你的屏幕是什么分辨率,宽度都会得到320,而高度就根据比例宽高比例计算,所以在我的Milestone上(480X854)得到的宽高为320X569,如果要得到真实的分辨率,就必须乘以dm.density,这个值是因硬件分辨率而异的,如果是屏幕硬件宽为320像素,那么这个值就是1,如果是480,这个值就是480/320,就是1.5。


这家伙很懒,没有签名档.

posted on 2011-07-04 17:27 海力布 阅读(98) 评论(0)  编辑 收藏

公告

昵称:海力布
园龄:3年11个月
粉丝:0
关注:0

导航

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

统计

  • 随笔 - 30
  • 文章 - 103
  • 评论 - 27
  • 引用 - 0

搜索

 
 

随笔档案(30)

文章分类(56)

文章档案(103)

相册

C/C++

PM

积分与排名

  • 积分 - 17374
  • 排名 - 5753

最新评论

阅读排行榜

评论排行榜

推荐排行榜