码迷,mamicode.com
首页 > 其他好文 > 详细

px、dp与sp的区别以及换算

时间:2016-03-06 15:47:16      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

1、px

  即像素,1px代表屏幕上的一个物理像素点。

2、dp

  dip:device independent pixels(设备独立像素),dp与dip一样,不同的设备有不同的显示效果,一般为了支持WVGA、HVGA和QVGA推荐使用这个,不依赖像素。

3、sp

  sp:scale-independent pixels(缩放独立像素),与缩放无关的抽象像素,它和dp很相似,但唯一的区别在于,Android系统允许用户自定义文字尺寸大小(小,正常,大,超大等),当文字尺寸是“正常”时,1sp=1dp=0.00625inch(英寸),当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625inch

4、dpi

  dpi:dots per inch(每英寸点数,或者说每英寸像素数目 更易懂),由设备决定,是写死的,可以通过context.getResources().getDisplayMetrics().densityDpi获取到。当然,也可以通过以下方法算出:

  dpi=横向分辨率/横向英寸数=纵向分辨率/纵向英寸数

Google 规定的屏幕密度列表:

  • ldpi (low) ~120dpi
  • mdpi (medium) ~160dpi
  • hdpi (high) ~240dpi
  • xhdpi (extra-high) ~320dpi
  • xxhdpi (extra-extra-high) ~480dpi
  • xxxhdpi (extra-extra-extra-high) ~640dpi

__________________________________________________________________________________

dp与px

px=dp*(dpi/160)

dp=px/(dpi/160)

sp与px

px=sp*(dpi/160)

sp=px/(dpi/160)

 

_____________________________________________________________________________

获取DisplayMetrics对象方法:

DisplayMetrics dm=new DisplayMetrics();
//获得DisplayMetrics对象方法一
//dm=context.getResources().getDisplayMetrics();
//获得DisplayMetrics对象方法二
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm);

度量单位获取代码:

public static float applyDimension(int unit, float value,
   DisplayMetrics metrics)
   {
 switch (unit) {
 case COMPLEX_UNIT_PX:
     return value;
 case COMPLEX_UNIT_DIP:
     return value * metrics.density;
 case COMPLEX_UNIT_SP:
     return value * metrics.scaledDensity;
 case COMPLEX_UNIT_PT:
     return value * metrics.xdpi * (1.0f/72);
 case COMPLEX_UNIT_IN:
     return value * metrics.xdpi;
 case COMPLEX_UNIT_MM:
     return value * metrics.xdpi * (1.0f/25.4f);
 }
 return 0;
    }

 

 

参考自:

 Supporting Multiple Screens

 Android中dip、dp、sp、pt和px的区别详解

 px 与 dp, sp换算公式?

 [Android问答] px、dp和sp,这些单位有什么区别?

 利用DisplayMetrics获取屏幕信息

  Android视觉规范-间距规范与文字规范单位换算(dip、sp与px)

px、dp与sp的区别以及换算

标签:

原文地址:http://www.cnblogs.com/libertycode/p/5247421.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!