1.屏幕单位
名称 | 单位缩写 | 单位全拼 | 介绍 |
屏幕尺寸 | '' 或 in | inch | 屏幕的大小,通常用屏幕对角线的长度表示.单位是寸 |
屏幕分辨率 | px | pixels | 整个屏幕的像素数,一般用屏幕的像素宽度(水平像素数)乘以像素高度表示,形如1280x720, 反之分辨率为1280x720的屏幕,像素宽度不一定为1280 |
屏幕密度 | dpi | dots per inch | 每英寸中的像素数。计算公式:屏幕分辨率/屏幕尺寸, |
打印分辨率 | dpi | dots per inch | dpi 原是印刷上的记量单位,意指每平方英寸上,所印刷的网点数。 在android中是每英寸中的像素点数,计算公式: (√(横向分辨率^2+纵向分辨率^2))/屏幕尺寸) |
图像的采样率 | ppi | pixels per inch | ppi才是是图像分辨率的单位,在图像中,每英寸所包含的像素数。 数码相机拍出来的图片因品牌或生产时间不同可能有所不同,常见的有72ppi,180ppi和300ppi |
2.长度单位
名称 | 单位缩写 | 单位全拼 | 介绍 |
像素 | px | pixels | “像素”(Pixel) 是由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的,是用来计算数码影像的 一种单位,若把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是 构成影像的最小单位“像素”(Pixel)。外国语缩写 PX或PiXel。 |
比例像素 | sp | scaled pixels | 带比例的像素,android中主要用它处理字体的大小,设置字体大小的最佳单位。 |
设备独立像素 | dip/dp | device independent pixels | 长度单位,根据具体平台屏幕密度的不同最终转换为相应的像素长度,具体转换规则是: 1dp = (目标屏幕密度/标准密度)*px, 标准密度为160dpi,例如,1dp长度在密度为160dpi 的平台表示一个像素的长度,而在240dpi的平台则表示1.5个像素的长度这个和设备硬件有关, 一般为了支持WCGA、HVGA和QVGA推荐使用这个,不依赖于像素。等同于dp |
英寸 | in | inches | 通常用屏幕对角线的长度 |
点数 | pt | points | 一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用 |
毫米 | mm | millimeters |
3.取得常用屏幕参数的方法
1 public MySystemParams(Activity activity) { 2 DisplayMetrics dm = new DisplayMetrics(); 3 activity.getWindowManager().getDefaultDisplay().getMetrics(dm); 4 screenWidth = dm.widthPixels; 5 screenHeight = dm.heightPixels; 6 densityDpi = dm.densityDpi; 7 scale = dm.density; 8 fontScale = dm.scaledDensity; 9 10 screenOrientation = screenHeight > screenWidth ? SCREEN_ORIENTATION_VERTICAL 11 : SCREEN_ORIENTATION_HORIZONTAL; 12 }
4.px,dp,sp单位转换工具类
1 /** 2 * Android大小单位转换工具类 3 */ 4 public class PxDpSpUtil { 5 /** 6 * 将px值转换为dip或dp值,保证尺寸大小不变 7 * 8 * @param pxValue 9 * @param scale 10 * (DisplayMetrics类中属性density) 11 * @return 12 */ 13 public static int px2dip(float pxValue, float scale) { 14 return (int) (pxValue / scale + 0.5f); 15 } 16 17 /** 18 * 将dip或dp值转换为px值,保证尺寸大小不变 19 * 20 * @param dipValue 21 * @param scale 22 * (DisplayMetrics类中属性density) 23 * @return 24 */ 25 public static int dip2px(float dipValue, float scale) { 26 return (int) (dipValue * scale + 0.5f); 27 } 28 29 /** 30 * 将px值转换为sp值,保证文字大小不变 31 * 32 * @param pxValue 33 * @param fontScale 34 * (DisplayMetrics类中属性scaledDensity) 35 * @return 36 */ 37 public static int px2sp(float pxValue, float fontScale) { 38 return (int) (pxValue / fontScale + 0.5f); 39 } 40 41 /** 42 * 将sp值转换为px值,保证文字大小不变 43 * 44 * @param spValue 45 * @param fontScale 46 * (DisplayMetrics类中属性scaledDensity) 47 * @return 48 */ 49 public static int sp2px(float spValue, float fontScale) { 50 return (int) (spValue * fontScale + 0.5f); 51 } 52 }