Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1562326
  • 博文数量: 237
  • 博客积分: 5139
  • 博客等级: 大校
  • 技术积分: 2751
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-18 14:48
文章分类

全部博文(237)

文章存档

2016年(1)

2012年(4)

2011年(120)

2010年(36)

2009年(64)

2008年(12)

分类: 嵌入式

2011-06-22 16:51:30

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.

另外补充

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

view plaincopy to clipboardprint?
      TextView tv=(TextView)findViewById(R.id.tv);   
        DisplayMetrics dm=new DisplayMetrics();   
       getWindowManager().getDefaultDisplay().getMetrics(dm);   
       float width=dm.widthPixels*dm.density;   
        float height=dm.heightPixels*dm.density;   
       tv.setText(width+"X"+height); 

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

代码为:

public static String getDisplayMetrics(Context cx) {
   String str = "";
   DisplayMetrics dm = new DisplayMetrics();
   dm = cx.getApplicationContext().getResources().getDisplayMetrics();
   int screenWidth = dm.widthPixels;
   int screenHeight = dm.heightPixels;
   float density = dm.density;
   float xdpi = dm.xdpi;
   float ydpi = dm.ydpi;
  
   str += "The absolute width:" + String.valueOf(screenWidth) + "pixels\n";
   str += "The absolute heightin:" + String.valueOf(screenHeight)
   + "pixels\n";
   str += "The logical density of the display.:" + String.valueOf(density)
   + "\n";
   str += "X dimension :" + String.valueOf(xdpi) + "pixels per inch\n";
   str += "Y dimension :" + String.valueOf(ydpi) + "pixels per inch\n";
  
   return str;
}

另外一种方法是:

   WindowManager windowManager = getWindowManager();
   Display display = windowManager.getDefaultDisplay();
   ANDROID_WIDTH = display.getWidth();
   ANDROID_HEIGHT = display.getHeight();

阅读(1737) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

tianbianfei2011-07-14 11:04:50

楼主,请帮忙解决一个问题好吗?http://doumiw.com/market/community/t!showTopic.do?topicId=24