iTalker
iTalker copied to clipboard
关于app的设计图里px该怎么转换成dp的问题?
老师 设计师给的蓝图 是px标注的 想知道有没有一套方法可以计算出在安卓的xml布局中大概设置多少dp? 而且每台设备的dp大小也会根据屏幕尺寸有所不同
一般来说得让设计师确定自己出的设计图是基于那个屏幕密度的设计图。
关于屏幕密度可以是:mdpi、hdpi、xhdpi、xxhdpi等,简单说一下设计图有何不同。
如图,屏幕大概宽度是270,控件为266px;上述的是mdpi级别的设计图;如果要在hdpi下达到同样的视觉效果,他的设计图应该是:
这个时候的控件的px值明显上升了,大约是1.5倍左右;虽然尺寸上升了,但是视觉效果却差不多,都是差不多沾满屏幕。
那么很多同学问,这样具体的差异是什么?
简单来说: 我们的屏幕如果都是5厘米宽度,如果屏幕密度是mdpi则可以看见像素颗粒,而屏幕如果是hdpi甚至更高的密度,那么就不容易看见像素,屏幕显示显得更加细腻。 所以买手机别看尺寸,看密度,屏幕越大不代表显示效果越好。
回到正题。
首先你需要确定设计师的设计图是什么密度的,有同学说如何确定;上面两个图片,图一是:mdpi,图二是:xhdpi。
若图二也是mdpi,有没有可能?有可能,如果是那么显示应该是这样:
这才是设计师要想表达的意义;所以具体的密度让设计师告知一下就好。
好的,回到图一、图二。两个图虽然分辨率不同,但是几乎是等比放大,当屏幕放大,控件也放大了;所以他们虽然是不同的密度设计图,但是表达的dp值是一样的。
若设计师给的图1,那么我们写控件的dp值的时候就是266dp;在mdpi设计图下px=dp。 若设计师给的图2,那么我们写控件的dp值也是266dp。
http://angrytools.com/android/pixelcalc/ 这里有个快速换算的网站,可以参考一下。
当然上述的例子并不是很恰当,因为不同的密度对应的dp值是有上限的,超过了则很容易控件溢出屏幕,上述的值其实已经超出了。