
在android 开发过程中,我们使用的单位比较少,一般情况下在描述字体大小的时候我们通常用sp,而在设置间距的时候我们用dp,除此之外很少再用到其他单位,而且很多时候我们用着用着就习惯了,也不去探究为什么这么写,可不可以用其他单位,每个单位到底代表着什么意思,所以说,习惯真的很可怕呀。今天,我们就来一探究竟,看看这些单位背后的含义。
像素即是屏幕上显示数据的最基本的点,在PS里面也是其最根本的单位,所有的图形都是在此基础上生成的,平时我们经常讲的手机屏幕分辨率就是以像素作为单位的,比如在android中我们经常说的手机像素是1080X1920,其实它所表达的意思是在该手机上面在横向上面有1080个像素点,在纵向上有1920个像素点。
在android中用来形式字体大小的单位,正常情况下会按照手机系统设置的文本大小来显示文字,但是同时也会与系统设置的文本保持一致,比如在有些老年机上面为了更好的 *** 作手机有些人会将字体设置为较大字体,这个时候使用sp作为单位的字体也会随之变大,但是如果将字体大小的单位设置为dp,则不会随着系统字体的变化而变化。
在每次的手机厂商新品发布会上,我们都会听到关于手机的介绍,比如手机的屏幕分辨率,多大尺寸等等。而当我们知晓一个手机的屏幕分辩率和手机尺寸的时候,就可以计算出手机的物理像素密度,其计算公式为:
需要注意的是,PPI是Android手机物理像素密度,而非在Android开发过程中我们经常说到的像素密度。
屏幕密度与dpi密切相关,dpi是每英寸的点数。也就是说,密度越大,每英寸内容纳的点数就越多。
在androidutil包下有个DisplayMetrics类可以获得密度相关的信息。最重要的是densityDpi这个成员,它有如下几个常用值:
DENSITY_LOW = 120
DENSITY_MEDIUM = 160 //默认值
DENSITY_TV = 213 //TV专用
DENSITY_HIGH = 240
DENSITY_XHIGH = 320
DENSITY_400 = 400
DENSITY_XXHIGH = 480
DENSITY_XXXHIGH = 640
dpi的值主要是通过displayMetrics获取的,获取方式为:
val densityDpi = resourcesdisplayMetricsdensityDpi。
dp和dip是一样的,设备独立像素,这个和设备硬件有关,不同设备有不同的显示效果。而通常在做android项目的时候,为了适配市场上面众多的手机屏幕分辩率,我们一般都会采用dp。dp是Android基于物理设备的PPI抽象出来的一个单位。它是以160dpi的屏幕为基准定义的,在160dpi的屏幕上1dp=1px,那么由此我们就可以得出其计算公式:
换算公式:1dp = (屏幕ppi/160)px或者是px = (屏幕ppi/160)1dp。举个例子:假设ppi = 320,那么1dp = 2px。
下面我们来演练一下:
如图所示,手机的屏幕分辩率为1080X1920,尺寸为5寸,从而计算得出PPI的值为440,再通过PPI计算出1dp 约等于3px。假设现在美工给的图上面有一个a图标,距离顶部的距离为30px,那么根据最终我们的换算结果可知,我们设置为10dp就可以达到完美的显示效果。
dp=(160/ 像素密度值)px
so, xhdpi时,dp=1/2px;xxhdpi时,dp=1/3px;
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)
px : pixels(像素)
ppi : pixels per inch(像素密度,所表示的是每英寸所拥有的像素数量)
dpi : dots per inch(每英寸的点数)
dp、dip : device independent pixels(设备独立像素)
sp : scaled pixels(放大像素)
density:安卓系统中的density表示的是密度系数。计算方法是density = dpi / 160。即将160dpi作为标准的密度值(每英寸点数),我们设置的dp值即是在160的标准密度值下的像素数;所以px = density dp。
PPI和DPI的含义区别?
PPI:pixels per inch(像素密度,所表示的是每英寸所拥有的像素数量)
为什么分辨率一样,屏幕尺寸一样, 同样的dp值显示出来的实际像素值不一样?
答:PPI是固定计算的,和分辨率,屏幕尺寸相关。DPI是ROM厂商设定的,不是确定公式计算的。同样的分辨率和屏幕尺寸,只能得到PPI一致。但是这不是实际显示的结果,设置dp值是按照DPI来计算的,这个时候需要看设备实际的DPI值,DPI不同结果不同。厂商可能为了显示效果而设置了不同的density(DPI)
这一次要帮你彻底搞明白px、ppi、dot、dpi、sp、dp、pt
这是初级设计师经常弄混淆的几个概念,下面我以“基本概念,易混淆的点,从问题入手,总结”四个方面来聊一聊 Px,ppi;dot,dpi; sp,dp;pt 那些事儿。
一、px,ppi;dot,dpi; sp,dp;pt 的基本概念
1 px:像素
1像素实际上是一个颜色点,所以又称像素点。大量不同颜色点组成一张图像,因此图像的基本单位是像素px(没有比像素更精细的单位了)。
像素主要用来表示图像大小和显示器分辨率(如19201080px)。像素本身的物理尺寸不固定,所以它的物理尺寸没有意义,有意义的是它的数量。
为什么像素的物理尺寸不固定?
像素本身不是物理世界的单位,是一个相对单位,尺寸可大可小。在高密度的屏幕上像素会变小,显示效果更清晰。因为“像素量px = 像素密度ppi x 屏幕尺寸in”,同样是1英寸的屏幕,密度越大,像素越多,则单个像素的物理尺寸越小。
都是相关信息,体积和像素有什么关系?
通常所说的100KB的指的就是的体积,首先一张图像在存储时,会描述每个像素点的颜色信息、位置、数量,这些描述数据就是图像的体积,如果像素越多自然图像体积越大。假如一张都是一个颜色,图像在保存时就会压缩,只存一个像素点的颜色信息,这样的图像体积会小很多。所以,像素点越多,颜色越复杂,图像体积越大。
为什么我们要买高像素的相机?
日常我们所说的几百万像素的相机,这个几百万像素指的是拍摄最大像素量照片时,图像宽高位置上像素量的乘积。如果像素量大,将来印刷或者在显示器上查看,在1英寸上就有足够多的像素显示,像素密度增加,图像也会更清晰。因此,我们更愿意买高像素的相机。
总结: 像素px常用来描述图像尺寸和显示器分辨率。
2 ppi:像素密度(pixel per inch)
1英寸屏幕上显示的像素量,密度单位。决定的物理显示尺寸,只有涉及到显示才有意义。值越大,显示越细腻。
计算公式: ppi=屏幕对角线上的像素量px/对角线长度inch = √(屏幕横向像素^2 + 屏幕纵向像素^2)/对角线长度。
为什么说ppi决定的物理尺寸?
一个手机的显示屏在出厂时就确定了PPI的值,PPI越大,显示越高清。的物理尺寸 = PPI Px,通常一张图像的px确定,ppi越大,则它的物理尺寸越小。所以为什么我们在高PPI的手机上,人眼看到的图像比低PPI的图形小。在设计行业,我们会针对高PPI的手机,设计更大像素的图像也是这个道理。
日常所说的分辨率有两个概念,一个指显示器的分辨率,另一个指图像的分辨率。显示器分辨率指显示器所能显示的像素多少(1920px1080px),显示器可显示的像素越多,画面就越精细,因为屏幕尺寸一定,分辨率越大,像素密度越大。显示器分辨率都用(1920px1080px)这种形式表示,清晰度还需要结合屏幕尺寸计算。图像分辨率则是单位英寸中所包含的像素点数,比如photoshop 里新建画布时设置的图像分辨率72ppi,其定义更趋近于分辨率本身的定义
注意:
同一显示屏上查看,像素量越大,尺寸越大。
显示分辨率一定的情况下,显示屏越小图像越清晰(比如MacBook),反之,显示屏大小固定时,显示分辨率越高图像越清晰。
对于设计师来说像素密度很重要,需要很据像素密度来切图和适配,理解了像素密度的意义,就理解了几倍图之间的关系。
3 dot:墨点
印刷品的最小单位,表示一个印刷颜色点,类似px,只有相对大小,用在印刷行业。
4 dpi:打印分辨率 (dot per inch)
1英寸上打印的墨点数量,密度单位,只用在印刷行业,值越大,印刷越精细。
注意:
与安卓的dp完全没关系。
印刷行业相关的单位是dot,dpi。印刷尺寸(英寸)=打印墨点数(dot)/打印机密度(dpi)。
照片的清晰度,是由打印机分辨率决定的。所以一张照片包含的像素越多(需要高像素照相机拍摄),高dpi打印机就可以打印出清晰的。如果照片像素量px一定, 打印机的dpi越高, 则打印尺寸越小。(这里可设置为dot=px)
5 pt:点(印刷)
大小为1/72英寸=035mm,单位是英寸,是物理长度单位,大小固定,绝对单位。源于活字排版时代,photoshop里的字体单位就只这个。
公式: 1pt= (PPI / 72) px。
当photoshop中新建画布的分辨率为72ppi,由公式,则1pt=1px。当分辨率为144ppi时,1pt=2px。
注意: 这里指印刷行业的pt哦!
6 pt: 点(iOS)
iOS系统开发单位,是独立像素的意思,长度固定,不随屏幕像素密度ppi变化而变化。
苹果公司规定:普屏时1px=1px,而普屏的ppi=163像素/英寸,那么pt=1/163英寸=016mm(固定值)。普屏1px=1px,高清屏1pt=2px。
用固定长度pt作为开发单位的好处是,这样可以保证同一张在不同设备上显示大小一样,因为pt值是固定的。高清屏上1pt等于更多的像素px,因为像素在高清屏上变小,所以pt还是固定的。
7 dp:长度(Android)
(Density-independent pixel) 是安卓开发用的长度单位。
根据不同的屏幕分辨率,与px有不同的倍数关系。规定:1dp等于屏幕像素密度为160ppi时1px的长度,因此dp在整个系统大小是固定的。公式:1dp=(屏幕ppi/ 160)px。
1dp等于屏幕像素密度为160ppi时1px的长度,即,在mdpi时,1dp = 1px。 以mdpi为标准,这些屏幕的密度值比为: ldpi : mdpi : hdpi : xhdpi : xxhdpi = 075 : 1 : 15 : 2 : 3。android中清屏1dp=1px,高清屏1dp=15px,超清屏1dp=2px。
做设计时以xhdpi为模板, xhdpi条件下1dp=2px,标注长度的时候,将长度像素除以2即为dp值,这样方便和开发沟通。
8 sp:大小(Android)
(scale-independent pixel) 安卓开发用的字体大小单位。
注意: dp和sp都是安卓开发的单位,dp是长度单位,sp是字体单位。一般情况下可认为sp=dp。
二、易混淆的点
px和dot
都是点的概念,px应用在电子显示设备上,是显示图像的基本单位。dot应用在印刷行业,是打印的基本单位。
ppi和dpi
ppi和dpi无关系,互不影响 。 ppi影响图像的显示尺寸,dpi影响图像的打印尺寸。打印时可以让数量上px=dot,则设计时在photoshop里设置的ppi大小,可以认为是dpi大小。
很多技术人员经常把ppi和dpi画等号, 其实他们的物理意义不一样,但是因为混淆的人多了,所以在电子屏幕显示中提到的ppi和dpi我们可以认为是一样的。
pt和dp
iOS系统的pt和Android系统的dp概念是相似的。
三、从问题入手深入理解概念
1设计印刷品时,为什么说在ps里设置的ppi没有实际意义,但还是要设置呢?
首先我们要明白,打印的分辨率dpi是由实际的打印机决定的,所以在ps里设置分辨率根本没有意义。但是我们可以预期打印效果,比如多大的分辨率和尺寸,有了这两个值就能确定像素量px,即,只要像素量满足要求,就能打印出预期的效果。所以ps里设置分辨率ppi是为了让ps计算出像素量大小。
2photoshop里,高ppi和低ppi画布的显示差别?
Photoshop里的显示大小只和图像的像素量和显示器分辨率有关。显示器是确定的,所以像素量越大,显示尺寸越大。
3photoshop里, 相同像素的图像,高ppi图像拖入到低ppi图像里,高ppi的图像变小, 为什么?
因为拖入后,高ppi的文档分辨变小,photoshop把图像的像素按照ppi变小的比例变小。这样里体现了不同ppi的图像在photoshop里的转换关系。
4photoshop里,相同像素的图像,低ppi图像拖入高ppi图像里,低ppi的图像无变化,为什么?
因为拖入后,低ppi的文档分辨变大,photoshop把图像的像素按照ppi变大的比例变大,这样就超过了画布尺寸,photoshop按照置入的原理显示,即按最大边匹配。
5使用软件的方式,增加图像的像素px,或者提高图像的像素密度ppi,对图像有什么影响?
软件增加像素,会变模糊,因为增加的不是有效像素,所谓高清图是指包含有效像素多的。显示清晰度由显示器本身决定,的ppi没有意义。
6100100px的,ps改变它的ppi,会怎样?
像素是确定的,即不会影响显示,也不会影响印刷。
四、总结
1手机设计稿
因为手机屏幕的ppi和英寸确定,那么像素可计算出来,即px确定,只需设置ps的画布像素px相同就可以了,ps里设置的ppi对手机设计稿而言并没有什么意义,可以随便设置;手机只关注的像素够不够,因为是按照手机1:1的像素设计。所以,适配高ppi手机的设计稿,修改ps的ppi是没有用的,而应该按照高ppi的像素修改设计稿。
2打印设计稿
打印尺寸和打印分辨率300dpi确定, 但ps以px为单位,由公式dot=英寸dpi,px=英寸ppi,英寸相同, dpi=ppi=300,那么数量上可以dot=px。ps的英寸和ppi确定, px也确定,但不能直接得出px数量,但是ps可直接设置厘米cm, 那就只需要设置宽高的厘米和分辨率300ppi=11811像素/厘米,就可以间接设置所需的像素量,这就能保证300dpi清晰度和打印尺寸。(设置300dpi时ps会自动转化为11811像素/厘米)
dp、sp和px的区别:现在这里介绍一下dp和sp。dp也就是dip。这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp
或sp。但如果设置字体,需要使用sp。dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一
样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是32寸),而屏幕密度变成了320。那么原来TextView的宽度
设成160px,在密度为320的32寸屏幕里看要比在密度为160的32寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动
将width属性值设置成320px的。也就是160 320 / 160。其中320 /
160可称为密度比例因子。也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。
下面看一下其他单位的含义
px:表示屏幕实际的象素。例如,320480的屏幕在横向有320个象素,在纵向有480个象素。
in:
表示英寸,是屏幕的物理尺寸。每英寸等于254厘米。例如,形容手机屏幕大小,经常说,32(英)寸、35(英)寸、4(英)寸就是指这个单位。这
些尺寸是屏幕的对角线长度。如果手机的屏幕是32英寸,表示手机的屏幕(可视区域)对角线长度是32254 =
8128厘米。读者可以去量一量自己的手机屏幕,看和实际的尺寸是否一致。
mm:表示毫米,是屏幕的物理尺寸。
pt:表示一个点,是屏幕的物理尺寸。大小为1英寸的1/72。
原帖地址>
以上就是关于Android中常见的单位ppi,dp,dpi,sp,px全部的内容,包括:Android中常见的单位ppi,dp,dpi,sp,px、探究安卓px/dp/dip/dpi/ppi/sp/density含义、这一次要帮你彻底搞明白px、ppi、dot、dpi、sp、dp、pt等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)