屏幕尺寸,屏幕分辨率,屏幕密度,各种长宽单位(px,sp,dp,in.pt,mm)

1.屏幕单位

名称

单位缩写

单位全拼

介绍

屏幕尺寸'' 或 ininch屏幕的大小,通常用屏幕对角线的长度表示.单位是寸
屏幕分辨率pxpixels

整个屏幕的像素数,一般用屏幕的像素宽度(水平像素数)乘以像素高度表示,形如1280x720,

反之分辨率为1280x720的屏幕,像素宽度不一定为1280

屏幕密度

dpi

dots per inch

每英寸中的像素数。计算公式:屏幕分辨率/屏幕尺寸,

打印分辨率

dpi

dots per inch

dpi 原是印刷上的记量单位,意指每平方英寸上,所印刷的网点数。

在android中是每英寸中的像素点数,计算公式: (√(横向分辨率^2+纵向分辨率^2))/屏幕尺寸)

图像的采样率

ppi

pixels per inch

ppi才是是图像分辨率的单位,在图像中,每英寸所包含的像素数。

数码相机拍出来的图片因品牌或生产时间不同可能有所不同,常见的有72ppi,180ppi和300ppi

2.长度单位

名称单位缩写单位全拼介绍
像素pxpixels

“像素”(Pixel) 是由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的,是用来计算数码影像的

一种单位,若把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是

构成影像的最小单位“像素”(Pixel)。外国语缩写 PX或PiXel。

比例像素spscaled pixels带比例的像素,android中主要用它处理字体的大小,设置字体大小的最佳单位。
设备独立像素dip/dpdevice independent pixels

长度单位,根据具体平台屏幕密度的不同最终转换为相应的像素长度,具体转换规则是:

1dp = (目标屏幕密度/标准密度)*px, 标准密度为160dpi,例如,1dp长度在密度为160dpi

的平台表示一个像素的长度,而在240dpi的平台则表示1.5个像素的长度这个和设备硬件有关,

一般为了支持WCGA、HVGA和QVGA推荐使用这个,不依赖于像素。等同于dp

英寸ininches通常用屏幕对角线的长度
点数ptpoints一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用
毫米mmmillimeters 

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 }

 

转载于:https://www.cnblogs.com/sjjg/p/4855199.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值