dip sp px dpi 分辨率等尺寸的区别

分辨率对应DPI

ldpi QVGA (240×320)

mdpi HVGA (320×480)

hdpi WVGA (480×800),FWVGA (480×854)

xhdpi 720P(1280*720)

xxhdpi 1080p(1920*1080 )

xxxhdpi 4K(3840×2160)

手机常见分辨率:

4:3

VGA 640*480 (Video Graphics Array)

QVGA 320*240 (Quarter VGA)

HVGA 480*320 (Half-size VGA)

SVGA 800*600 (Super VGA)

5:3

WVGA 800*480 (Wide VGA)

16:9

FWVGA 854*480 (Full Wide VGA)

HD 1920*1080 High Definition

QHD 960*540

720p 1280*720 标清

1080p 1920*1080 高清

Android

像素 密度
HVGA mdpi

WVGA hdpi

FWVGA hdpi

720P(1280*720) xhdpi

1080P(1920*1080) xxhdpi

密度 建议尺寸

mipmap-mdpi 48 * 48 1

mipmap-hdpi 72 * 72 1.5

mipmap-xhdpi 96 * 96 2

mipmap-xxhdpi 144 * 144 3

mipmap-xxxhdpi 192 * 192 4

一.基本概念

  • dpi:dots per inch , 说白了就是一英寸有多少个像素点。常见取值 120,160,240。我一般称作像素密度,简称密度
  • dip:Density independent pixels ,设备独立像素 — 这个和设备硬件有关,一般我们为了支持手机上多种分辨率,如WVGA、HVGA和QVGA,都会使用dip作为长度的单位
  • dp:与dip完全相同,只是名字不同而已。在早期的Android版本里多使用dip,后来为了与sp统一就建议使用dp这个名字了。
  • px:屏幕的像素点,简称像素
  • sp:与缩放无关的抽象像素(Scale-independent Pixel)。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。(建议使用sp作为文本的单位,其它用dp
  • density:直接翻译的话貌似叫 密度。常见取值 1.5 , 1.0 。和标准dpi的比例(160px/inc)
  • 分辨率 :横纵两个方向像素点的数量,例如480x800,1920x1080
  • 屏幕尺寸 :我们生活中经常听到手机5英寸,4.5英寸。电脑23.8英寸。它的结果是按照屏幕的对角线计算出来的,1英寸=2.5400 厘米,也就是说,5英寸=12.7厘米
  • 屏幕比例的问题:因为只确定了对角线长,2边长度还不一定。所以有了4:3、16:9这种,这样就可以算出屏幕边长了。

单位互相转换

1.计算dpi----> 单位英寸下的像素

例如有一台手机,屏幕4寸,分辨率480X800,它的dpi如何算呢?
因为不知道边长,肯定不能分开算,4是对角线长度,那直接用勾股定理算对角线像素,除以4,算出来大概是 dpi = 233 像素/英寸。
那么density就是 (233 px/inch)/(160 px/inch)=1.46 左右
顺便说下,android默认的只有3个dpi,low、medium和high,对应 120、160、240,如果没有特别设置,所有的dpi都会被算成这3个,其中default的为160.

2. 计算 dp 与 px

我们写布局的时候,肯定还是要知道1个dp到底有多少px的。
换算公式如下: dp = (DPI/(160像素/英寸))px = density px
注意,这里都是带单位的。px是单位,dp是单位,density没单位。
为了方便,假设dpi是240 像素/英寸 , 那么density就是1.5
那么就是 dp=1.5px ,注意这是带了单位的,也就是 设备无关像素 = density 像素 那么转换为数值计算的话,应该是下面这个式子
  PX = density * DP

你可能感兴趣的:(dip sp px dpi 分辨率等尺寸的区别)