从像素到密度无损的Photoshop设计

13

我已经用Photoshop做好了最终的应用程序设计,其中所有尺寸都以PX为单位。

现在我意识到Android应用程序使用DP来设置字体大小和其他一些东西。

有没有办法将PX转换为DP?

5个回答

13

在更实际的方面,你有几种增加工作和保真度的选择:

  1. 将资源缩放到每英寸160个点,把它们放在res/drawable目录中,让操作系统将它们缩放以在设备上正常显示。

  2. 制作两份资源的副本:一份是每英寸160个点的,在res/drawable目录中;另一份是每英寸240个点的,在res/drawable-hdpi目录中。让操作系统从一个相当接近的数开始为确切的设备进行缩放。

  3. 决定不要任何缩放并使用原始像素,所以将你的资产放在res/drawable-nodpi目录中。这意味着在320x480(像素)图形可能在一个手机上是2英寸x 3英寸,而在另一个屏幕上只有1 1/3英寸x 2英寸。

  4. 使用draw9patch工具指定你的工作的确切缩放策略。这对于防止盒子的角从缩放中变得“锯齿状”以及使全屏图形应对不同的纵横比非常有用。

  5. 为你关心的每个设备制作单独的图形,并为其余设备使用可缩放的图形。你需要甩开挥舞着样式指南试图说服你不要这样做的狂热者。

哦,还有一个小坑,使用sp代替dppt来指定你的字体。例如,一个10点字体将是22sp字体[= 10 *(160/72)或=点数乘以2.222]。sp单位会随用户对小号、中号或大号字体的偏好而进行调整。


5
此列表中列出的Android支持的尺寸单位,以下是DP的说明:
密度无关像素 - 这是一种基于屏幕物理密度的抽象单位。这些单位相对于160dpi屏幕,因此在160dpi屏幕上,一个dp等于一个像素。dp到像素的比率会随着屏幕密度而改变,但不一定成正比例。注意:编译器接受"dip"和"dp"两者,虽然"dp"更符合"sp"。
这意味着像素和DP之间的“转换”将不一致 - 在某些设备上,比率可能是1DP = 160px,但理论上可以是任何值。当您设置按钮的宽度为100dp时(因为它将被动态呈现),这一切都很好,但当您必须有固定大小的图像时,就会出现问题。
阅读此页面“支持多个屏幕” - Android具有称为资源目录限定符的东西,可让您创建特定于大小和密度的版本图像资源。例如,对于低密度屏幕,您可以创建一个较小的版本的图像并将其放置在drawable-ldpi目录中(或对于高密度屏幕,则为drawable-hdpi)。 简而言之,您无法实际上“从PX转换为DP”(因为比率不固定),但您可以使用资源目录限定符创建多个版本的图像,并告诉Android要使用哪个版本。

那么我如何计算字体大小呢? 我知道在我的布局(PSD)中它们是25像素。但我需要重新计算这个大小给开发人员使用。 文本不应该作为图片,因为这个应用程序是多语言的。 - Dammark
@Dammark 对于字体大小,你应该使用sp(可缩放独立像素)。这基本上与dp相同,但根据用户的字体大小偏好进行缩放(有关更多信息,请参见上面列出的尺寸单位列表)。 - Donut

0

像素是PX,而DP或DIP是设备无关像素。我认为你不需要转换它们。但是你可以使用可缩放的9patch图像,使用Android工具中的draw9patch工具。


0

0

我曾经遇到同样的问题,但现在已经找到了解决方案。

为什么不使用在线转换器来查看不同分辨率的Android设备所需的dp或px呢?

请参考此链接:this link,它对我很有帮助,也会对你有所帮助。

享受编程的乐趣吧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接