如何将Android图像的ppi转换为dpi?

如何将Android图像的ppi转换为dpi?,android,dpi,Android,Dpi,我已经开始使用Adobe Photoshop为我的Android应用程序制作图形。但我无法继续,因为Photoshop中的分辨率是以每英寸像素为单位设置的,而谷歌官方文档称,Android需要以dpi设置图像。我在网上搜索过两者之间的转换,但从来没有找到合适的公式 我知道Android文档将这种关系描述为px=dp*dpi/160。但我的问题是,如果我知道dpi,那么在这个计算中,从哪里得到dp的值呢?或者是否存在关于dp值的任何假设?我很困惑。Dp是与密度无关的像素,用于概括屏幕的像素数。这些

我已经开始使用Adobe Photoshop为我的Android应用程序制作图形。但我无法继续,因为Photoshop中的分辨率是以每英寸像素为单位设置的,而谷歌官方文档称,Android需要以dpi设置图像。我在网上搜索过两者之间的转换,但从来没有找到合适的公式


我知道Android文档将这种关系描述为
px=dp*dpi/160
。但我的问题是,如果我知道dpi,那么在这个计算中,从哪里得到dp的值呢?或者是否存在关于dp值的任何假设?我很困惑。

Dp是与密度无关的像素,用于概括屏幕的像素数。这些都是从中提取的概括性数字

  • xlarge屏幕至少为960dp x 720dp
  • 大屏幕至少为640dp x 480dp
  • 正常屏幕至少为470dp x 320dp
  • 小屏幕至少为426dp x 320dp
屏幕的通用Dpi值:

  • 低密度(ldpi)屏幕的ldpi资源(~120dpi)
  • 用于中等密度(mdpi)屏幕(~160dpi)的mdpi资源。(这是基线密度。)
  • 用于高密度(hdpi)屏幕(~240dpi)的hdpi资源
  • 用于超高密度(xhdpi)屏幕(~320dpi)的xhdpi资源
因此,资源的一般大小(假设它们是全屏的):

  • ldpi
    • 垂直=426*120/160=319.5px
    • 水平=320*120/160=240px
  • mdpi
    • 垂直=470*160/160=470像素
    • 水平=320*160/160=320px
  • hdpi
    • 垂直=640*240/160=960像素
    • 水平=480*240/160=720px

编辑-随着xhdpi越来越流行,添加xhdpi

  • xhdpi
    • 垂直=960*320/160=1920像素
    • 水平=720*320/160=1440px
这些值应该适用于大多数xhdpi屏幕,如电视和Nexus 4,包括Nexus 10(假设他们没有为此创建一个新类别,因为它是25k x 16k,不知道,因为我还没有得到一个)

/Edit


如果你使用这些尺寸,你的图像在任何屏幕上都会很好看。请确保在dp中定义代码大小,但是,Android将自行处理上述转换。

是的,Photoshop只关心dp(密度独立像素)。它不应该考虑像素的密度将是什么。超高像素的图像可以放在超小的高清UI按钮上。或者,对于复古风格的A0俄罗斯方块海报,你可能只有很少的像素。这是因为它们可以缩放。屏幕上大面积的放大像素数较少,小面积的放大像素数较多

所以,选择你的目标屏幕大小并在photoshop中使用它。(同时查看谁使用了什么…)

这个网站帮助了我的直觉:

在运行时,平台根据所用屏幕的实际密度透明地处理所需dp单元的任何缩放

(平台进行缩放-密度比处理由Android完成,而不是您),这与UI极为相关:

强烈建议使用dp单元定义应用程序的UI,以确保在不同屏幕上正确显示UI


因为您希望UI元素在所有设备上显示相同,所以它将根据公式中计算的像素数进行缩放。如果dp的缩放方式使其变得过于空闲或密集,这看起来不太好。

在所有设备上都是一样的,所以它会根据公式中计算的像素数进行缩放。

因为Photoshop中的分辨率是以每英寸像素设置的,正如谷歌官方文档所说,Android需要以dpi设置图像。

我不同意Michael Allen的答案,因为ldpi、mdpi、hdpi和xdpi的最终分辨率不满足google文档“alternative Drawables”中提到的备选位图的3:4:6:8缩放比

因此,我建议您以最小尺寸为的基线示例为例

470 x 320 dp现在使用同一文档中的公式,我们计算基线屏幕大小的全屏分辨率

px=dp*(dpi/160);对于基准px=dp*(160/160)=dp*1 所以px=dp。这意味着基线配置的全屏大小。以像素为单位

470 X 320像素(mdpi)

现在,为了遵循ldpi、hdpi和xhdpi的可选可拉丝尺寸的3:4:6:8缩放比,我们需要从mdpi推导出单位值。i、 e

470/4=117.5

320/4=80

除以4,因为mdpi的缩放比为4,ldpi、hdpi和xhdpi的缩放比分别为3、6和8。现在只需将单位结果117.5和80与这些比例因子相乘

ldpi

117.5*3=352.5

80*3=240

mdpi

117.5*4=470

80*4=320

hdpi

117.5*6=705

80*6=480

xhdpi

117.5*8=940

80*8=640


现在,这些尺寸的比例达到了完美的3:4:6:8。

我也读过类似的内容。但是,当adobe photoshop以每英寸像素定义分辨率,而google doc以每英寸像素定义分辨率时,我该如何设置屏幕分辨率呢。在dpi中给出。感谢您的解释。这在很大程度上有所帮助。但将屏幕分辨率从dpi转换为ppi仍然存在困惑。因此我使用以下链接来假设屏幕分辨率:-抱歉,我想我有点错过了阅读问题。你说Photoshop需要每英寸像素的大小值,但它没有。PPI设置仅在您要打印时使用,因为屏幕是您唯一需要的东西