dpi和px怎么换算,dpi与像素换算公式

1. dpi是dot per inch,每英寸多少点,ppi是 Pixel per inch,每英寸像素数,针对显示器的设计时,dpi=ppi。

ppi计算方法是长宽各自平方之和开方,除以对角线长度单位英寸)。原理可以自己画个矩形勾股定理算一算。

2. ppi表示显示设备的点密度,dpi表示印刷品点密度。

3. dip或dp,是安卓开发用的单位,1dp表示在屏幕点密度为160ppi时1px长度。

因为安卓设备屏幕众多不可能为每个屏幕单独开发,所以用公式 px=dp*ppi/160)计算在不同屏幕上的像素数。

举例:HVGA屏320*480,一般是3.5寸,计算点密度为√ 320^2 + 480^2) / 3.5 = 164,约等于160,1pd=1px

WVGA屏480*800,按3.8寸屏算,点密度 √ 480^2 + 800^2) / 3.8 = 245,约等于240,1dp=1.5px。

还有更高分辨率的屏幕就不一一列举了,总之dp是为了方便适配不同屏幕的单位,在不同屏幕密度下,1dp的物理长度也相同。

—————————————————————————

2014-2-28修改,上面看不明白的可以从这里开始看

液晶屏显示图像,放大来看是一个个小点组成的,这些小点就是像素点px)。

有的手机屏幕小像素点少,比如HTC G11的4寸480×800屏幕,还有的屏幕大像素点多,比如三星note2的5.5寸720×1280屏幕。

这个图标在不同的手机屏幕上显示出来,就是上图的效果。可以想象一下我们不同的手机打开同一个应用,按钮的尺寸相差很大。

图片显示大小是由什么决定的呢,屏幕尺寸?上图第1和第2个屏都是4.3英寸。像素数?第2和第3个屏都是720×1280的像素。最后我们找到了点密度density),也就是像素数和屏幕尺寸的比值。density是每单位长度容纳的像素数量,一般用像素/英寸,也就是Pixel per inchppi)。

屏幕的尺寸是屏幕对角线的长度,计算对角线像素数量再除以屏幕尺寸就得到了ppi值。上面3个屏的点密度分别是217ppi,327ppi经评论提醒,应该是342ppi),267ppi。

对比上图可以知道,ppi越低图片显示的越大,ppi越高图片显示的越小。

要让不同屏幕显示图片的大小相同,就需要对图片进行缩放,给高ppi屏提供更大的图片。

高ppi屏幕需要更大的图片才能得到同样的显示效果,反之亦然。ppi和图片px的关系如下

px1/px2=ppi1/ppi2

选定一个ppi值作为基础绘制图片,用ppi的比值计算出图片缩放比例就可以适配各种屏幕

px2=px1*ppi2/ppi1)

安卓选定的这个基础值就是160ppi

px2=px1*ppi2/160)

我们已经解决了图片放大缩小的问题,还需要一个单位用来描述长度因为px不固定,inch不方便)。安卓创造了一个新的单位dp,中文名设备独立像素。并且规定在160ppi的屏幕上,1dp=1px。

设计师只需要针对160ppi的显示屏设计并制图,安卓会根据当前手机屏幕的ppi值来放大缩小图片,在不同的屏幕上得到相近的显示效果。

————————————————————

2014-2-12修改,补充部分关于SP单位的内容

安卓设备的文字单位是sp,简单理解和DP是相同的。

下面这段是从Android Design上抄的:

使用不同大小字体对比,可以创建有序的,易理解的布局。然而,在相同的用户界面有太多

不同大小的字体,会很乱。Android 框架使用以下的大小:

对应到App中:

上面这张知乎截图简单处理过),红字标明了对应的各种文字类型。

实际使用中没有那么绝对。中文App,中号16SP文字过大,正文也常用小号14SP的。超小号12SP也不够小,例如知乎就用了更小的字号。

PS设计时,针对对应的标准HDPI,XHDPI,XXHDPI),使用不同的px。

168飞艇6种不亏钱的方法2=px1*ppi2/ppi1)

安卓选定的这个基础值就是160ppi

px2=px1*ppi2/160)

我们已经解决了图片放大缩小的问题,还需要一个单位用来描述长度因为px不固定,inch不方便)。安卓创造了一个新的单位dp,中文名设备独立像素。并且规定在160ppi的屏幕上,1dp=1px。

设计师只需要针对160ppi的显示屏设计并制图,安卓会根据当前手机屏幕的ppi值来放大缩小图片,在不同的屏幕上得到相近的显示效果。

————————————————————

2014-2-12修改,补充部分关于SP单位的内容

安卓设备的文字单位是sp,简单理解和DP是相同的。

下面这段是从Android Design上抄的:

使用不同大小字体对比,可以创建有序的,易理解的布局。然而,在相同的用户界面有太多

不同大小的字体,会很乱。Android 框架使用以下的大小:

对应到App中:

上面这张知乎截图简单处理过),红字标明了对应的各种文字类型。

实际使用中没有那么绝对。中文App,中号16SP文字过大,正文也常用小号14SP的。超小号12SP也不够小,例如知乎就用了更小的字号。

PS设计时,针对对应的标准HDPI,XHDPI,XXHDPI),使用不同的px。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注