Android的计量单位px

Historically, programmers always designed computer interfaces in terms
of pixels. For example, you mightmake a field 300 pixels wide, allow 5
pixels of spacing between columns, and define icons 16-by-16 pixels in
size. The problem is that if you run that program on new displays with
more and more dots per inch (dpi), the user interface appears smaller
and smaller. At some point, it becomes too hard to read.
Resolution-independent measurements help solve this problem.
Android supports all the following units:
• px (pixels): Dots on the screen.
• in (inches): Size as measured by a ruler.
• mm (millimeters): Size as measured by a ruler.
• pt (points): 1/72 of an inch.
• dp (density-independent pixels): An abstract unit based on the density
of the screen. On a display with 160 dots per inch, 1dp = 1px.
• dip: Synonym for dp, used more often in Google examples.
• sp (scale-independent pixels): Similar to dp but also scaled by the
user’s font size preference.
To make your interface scalable to any current and future type of
display, I recommend you always use the sp unit for text sizes and the
dip unit for everything else. You should also consider using vector
graphics instead of bitmaps

dp(dip): device independent pixels(设备独立像素).
分歧装备有差别的显得效果,这几个和装置硬件有关,一般大家为了帮衬WVGA、HVGA和QVGA
推荐应用那个,不注重像素。

 

sp: scaled pixels(与刻度非亲非故的像素). 首要用来字体呈现best for
textsize。
dp也正是dip,这些和sp基本类似。即使设置表示长度、中度等属性时可以使用dp
或sp。

比方英文不想看,看下边:

但一旦设置字体,须求选择sp。dp是与密度非亲非故,sp除了与密度非亲非故外,还与scale无关。借使显示器密度为160,那时dp和sp和px是一
样的。1dp=1sp=1px,但如若利用px作单位,即便显示屏大小不变(借使依旧3.2寸),而显示屏密度变成了320。那么原来TextView的大幅设成160px,在密度为320的3.2寸荧屏里看要比在密度为160的3.2寸显示屏上看短了大体上。但一旦设置成160dp或160sp的话。系统会自行
将width属性值设置成320px的。也正是160 * 320 / 160。个中320 /
160可称之为密度比例因子。也正是说,要是运用dp和sp,系统会基于荧屏密度的变动自动进行更换。
px: pixels(像素).
不相同装备展现效果一样,一般大家HVGA代表320×480像素,那么些用的可比多。
pt:
point,是1个标准的长度单位,1pt=七分一2英寸,用于印刷业,万分不难易用;

px:是显示器的像素点

上面来看一动手提式有线电话机显示屏类型和密度以及分辨率的应和关系

in:英寸

QVGA屏density=120 QVGA(240*320)
HVGA屏density=160 HVGA(320*480)
WVGA屏density=240 WVGA(480*800)
WQVGA屏density=120 WQVGA(240*400)

mm:毫米

注:density值表示每英寸某些许个呈现点,与分辨率是多少个概念。

pt:磅,1/72 英寸

今非昔比density下显示屏分辨率音讯是区别的,以480dip*800dip的
WVGA(density=240)为例

dp:3个依据density的悬空单位,假诺多个160dpi的荧屏,1dp=1px

1、当density=120时

dip:等同于dp

转车:转化周详=120/240

sp:同dp相似,但还会依据用户的字体大小偏好来缩放。

荧屏实际分辨率为240px*400px (多少个点对应三个分辨率)

建议使用sp作为文本的单位,其它用dip

状态栏和标题栏高各19px只怕25dip

 

横屏是显示器宽度400px 或然800dip,工作区域中度211px或然480dip

 

竖屏时显示屏宽度240px可能480dip,工作区域中度381px或许775dip

本着dip和px 的关系,做以下概述:

2、当density=160时

 

倒车:转化周全=160/240

HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120
density值表示每英寸有多少个显示点,与分辨率是四个概念。
不一致density下显示器分辨率音信,以480dip*800dip的
WVGA(density=240)为例

显示屏实际分辨率为320px*533px (2个点对应七个分辨率)

density=120时 显示器实际分辨率为240px*400px (八个点对应一个分辨率)
状态栏和标题栏高各19px只怕25dip 
横屏是显示器宽度400px 恐怕800dip,工作区域中度211px依然480dip
竖屏时显示屏宽度240px仍旧480dip,工作区域中度381px或许775dip

状态栏和标题栏高个25px要么25dip

density=160时 荧屏实际分辨率为320px*533px (3个点对应七个分辨率)
状态栏和标题栏高个25px也许25dip 
横屏是显示器宽度533px 或然800dip,工作区域中度295px如故480dip
竖屏时显示器宽度320px照旧480dip,工作区域中度508px大概775dip

横屏是显示屏宽度533px 要么800dip,工作区域中度295px要么480dip

density=240时 显示器实际分辨率为480px*800px (3个点对于八个分辨率)
状态栏和标题栏高个38px照旧25dip 
横屏是荧屏宽度800px 大概800dip,工作区域中度442px或许480dip
竖屏时荧屏宽度480px要么480dip,工作区域中度762px可能775dip

竖屏时显示屏宽度320px要么480dip,工作区域高度508px大概775dip

apk的财富包中,当显示屏density=240时使用hdpi
标签的能源
当显示屏density=160时,使用mdpi标签的能源
当屏幕density=120时,使用ldpi标签的财富。
不加任何标签的能源是各类分辨率情形下共用的。
布局时尽大概利用单位dip,少使用px

3、当density=240时

转折:转化周全=240/240

显示屏实际分辨率为480px*800px (五个点对于三个分辨率)

状态栏和题目栏高个38px照旧25dip

横屏是显示器宽度800px 恐怕800dip,工作区域中度442px只怕480dip

竖屏时显示屏宽度480px还是480dip,工作区域中度762px或然775dip

我们一般在项目中会定义三个适配能源文件夹(values-XXX,drawable-XXX等)

drawable-ldpi: 显示器密度为120的无绳电话机配备

drawable-mdpi:
荧屏密度为160的无绳电话机配备(此为baseline,别的均以此为基准,在此设备上,1dp
= 1px)

drawable-hdpi: 荧屏密度为240的无绳电话机设备

drawable-xhdpi: 显示器密度为320的手机设备

drawable-xxhdpi:荧屏密度为480的无绳电话机配备

(values也是一样,当然还有一些要注意:values和values-hdpi效果是一律的,drawable和drawable-hdpi效果也是一致的,所以一般大家都会在那七个文件夹中存放的值是平等的,要是七个都有的话,适配更好)

apk的能源包中

当显示器density=240时,使用hdpi 标签的能源

当显示屏density=160时,使用mdpi标签的能源

当屏幕density=120时,使用ldpi标签的财富

当荧屏density=320时,使用xhdpi标签的能源

当显示屏density=480时,使用xxhdpi标签的财富

不加任何标签的财富是各个分辨率处境下共用的

之所以布局时尽大概利用单位dip,少使用px

dp与px换算公式:
pixs =dips * (densityDpi/160). 
dips=(pixs*160)/densityDpi