我有一个最终的应用程序设计,使我在Photoshop中的一切都在PX测量。 现在我意识到Android应用程序正在使用DP来处理字体大小和其他内容。Photoshop设计从px到dp
有什么办法可以将PX转换为DP?
我有一个最终的应用程序设计,使我在Photoshop中的一切都在PX测量。 现在我意识到Android应用程序正在使用DP来处理字体大小和其他内容。Photoshop设计从px到dp
有什么办法可以将PX转换为DP?
像素是PX,DP或DIP是与设备无关的像素。我不认为你需要转换这些。但是您可以使用android工具中的draw9patch
工具使用可缩放的9patch图像。
从Android支持的尺寸单位this list,这里的DP的描述:
密度独立像素 - 即是基于屏幕的物理密度的抽象单元。这些单位相对于160 dpi屏幕,所以一个dp是160 dpi屏幕上的一个像素。 dp与像素的比率将随着屏幕密度而变化,但不一定成正比。注意:编译器同时接受“dip”和“dp”,但“dp”与“sp”更加一致。
这意味着像素与DP之间的“转换”将不一致 - 在某些设备上,比率可能为1DP = 160px,但理论上它可能是任何东西。当你将一个按钮的宽度设置为100dp
(因为它会动态呈现),这是非常好的,但是当你的图像必须具有固定的大小时,它会出现问题。
在“Supporting Multiple Screens”上阅读本页 - Android有一些名为resource directory qualifiers的内容,可让您创建图像资源的大小和密度特定版本。例如,对于低密度屏幕,您可以创建较小版本的图像并将其放在drawable-ldpi
目录中(或drawable-hdpi
用于高密度屏幕)。
TL;博士你实际上不能“从PX转换为DP”(因为比例是不固定的),但你可以创建图像的多个版本,并告诉安卓与资源使用目录限定符。
在一个更实际的音符,你必须在提高工作和fidelty几个选择:
已经扩大为每英寸160点你的资源,把它们放在res/drawable
目录,让OS规模他们看在设备上。
制作您的资源的两个副本:您的res/drawable
中的每英寸点数为160,并且您的res/drawable-hdpi
目录中的每英寸点数为240点。让OS从相当接近的数字开始为具体设备进行缩放。
确定您不需要任何缩放并具有原始像素,因此请将您的资产置于res/drawable-nodpi
目录中。这意味着在320x480(像素)的情况下,一部手机的图形可能是2英寸x 3英寸,而另一个屏幕上的图形可能只有1英寸x 3英寸x 2英寸。
使用draw9patch
工具为您的工作指定确切的缩放策略。这对于保持盒子的角落不受缩放的“锯齿”影响以及使全屏图形适应不同的长宽比非常有用。
为您关心的每个设备制作单独的图形,并为其余的可缩放图形回退。你将需要超越狂热者挥舞着风格指南,试图说服你不要这样做。
哦,作为一个疑难杂症,指定sp
为您的字体,而不是dp
或pt
。 10点字体将是22 sp字体[= 10 *(160/72)或=点数乘以2.222]。 sp
单位可根据用户对小型,中型或大型字体的喜好进行缩放。
伟大的建议,谢谢。 – 2014-07-19 09:50:34
这是一个在线DP/PX转换工具:http://labs.rampinteractive.co.uk/android_dp_px_calculator/
那我怎么计算字体大小? 我知道在我的布局(PSD),他们是25px。但是我需要为开发人员重新计算这个大小。 文字不应该作为图像,因为这个应用程序是多种语言。 – Dammark 2010-12-16 12:37:04
@Dammark对于字体大小,您应该使用'sp'(与刻度无关的像素)。这与'dp'基本相同,但是由用户的字体大小首选项缩放(有关详细信息,请参阅上面的维度单位列表)。 – Donut 2010-12-16 12:49:26