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

我已经开始使用Adobe Photoshop为我的Android应用程序制作图形了。 但我无法继续,因为Photoshop中的分辨率设置为每英寸像素,正如官方Google文档所述,Android将需要以dpi设置的图像。 我在网上搜索了两者之间的转换,但从未得到任何适当的公式。

我知道Android文档将关系描述为px = dp*dpi/160 。 但我的问题是,如果我知道dpi,我在哪里得到dp的值,以便在此计算中使用? 或者是否有关于dp值的假设? 我很困惑。

  • 针对不同的Android屏幕尺寸/密度扩展Phonegap应用?
  • 在所有设备的相同位置定位图像的最佳方法?
  • 适用于Eclipse的Android Nexus 7 DPI
  • Android xxx-hdpi真实设备
  • Android的hdpi / mdpi / ldpi的值文件夹?
  • Dp是密度独立像素,用于概括屏幕的像素数。 这些是来自http://developer.android.com/guide/practices/screens_support.html的通用数据

    • xlarge屏幕至少为960dp x 720dp
    • 大屏幕至少640dp x 480dp
    • 正常屏幕至少为470dp x 320dp
    • 小屏幕至少为426dp x 320dp

    屏幕的通用Dpi值:

    • 用于低密度(ldpi)屏幕的ldpi资源(~120dpi)
    • mdpi用于中密度(mdpi)屏幕的资源(~160dpi)。 (这是基线密度。)
    • hdpi用于高密度(hdpi)屏幕的资源(~240dpi)。
    • xhdpi用于超高密度(xhdpi)屏幕(~320dpi)的资源。

    因此,您的资源的广义大小(假设它们是全屏):

    • LDPI
      • 垂直= 426 * 120/160 = 319.5px
      • 水平= 320 * 120/160 = 240px
    • MDPI
      • 垂直= 470 * 160/160 = 470px
      • 水平= 320 * 160/160 = 320px
    • 华电国际
      • 垂直= 640 * 240/160 = 960px
      • 水平= 480 * 240/160 = 720px

    编辑 – 添加xhdpi,因为它们变得越来越流行

    • xhdpi
      • 垂直= 960 * 320/160 = 1920px
      • 水平= 720 * 320/160 = 1440px

    这些值应该适用于大多数xhdpi屏幕,如电视和Nexus 4,包括Nexus 10(假设他们没有创建一个新的类别,因为它是25k x 16k,不知道因为我还没有手上一个)。

    /编辑


    如果您使用这些尺寸,您的图像在任何屏幕上都会很棒。 请务必在dp中定义代码中的大小,但Android会自行处理上述转换。

    我不同意迈克尔·艾伦的回答,因为ldpi,mdpi,hdpi和xdpi的最终分辨率不满足“替代抽屉”中谷歌文档中提到的替代位图的3:4:6:8缩放比例

    http://developer.android.com/guide/practices/screens_support.html#testing

    因此,我建议您采用最小大小为的基线示例

    470 x 320 dp现在使用相同文档中的公式我们计算基线屏幕尺寸的全屏分辨率

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

    470 X 320像素(mdpi)

    现在要遵循ldpi,hdpi和xhdpi的替代drawables尺寸的3:4:6:8缩放比例,我们需要从mdpi中导出单位值。 即

    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

    华电国际

    117.5 * 6 = 705

    80 * 6 = 480

    xhdpi

    117.5 * 8 = 940

    80 * 8 = 640

    这些尺寸现在具有完美的3:4:6:8缩放比例。

    是的,Dp(密度独立像素)是Photoshop所关心的。 它不应该考虑像素的密度。 可以将超高像素数的图像放在超小高清UI按钮上,以满足它所关心的所有需要​​。 或者你可能只有几个像素的俄罗斯方块的复古风格A0海报。 这是因为它们可以缩放。 对于大区域放大的像素很少,并且对于屏幕上的小区域缩小了许多像素。

    因此,选择尺寸屏幕大小的目标链接,并在photoshop中使用它。 (还查看谁使用了什么…使用的尺寸饼图 )

    为了直觉,这个网站帮助我链接到博客页面 :

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

    (平台进行缩放 – 密度比处理由Android完成;不是你),这与UI非常相关:

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

    因为您希望UI元素在所有设备上显示相同,所以它将根据它在该公式中计算的像素数进行缩放。 并且如果dp以某种方式缩放以使其变得太多或太密集,那么看起来不会很好。

    由于Photoshop中的分辨率设置为每英寸像素,因为官方Google文档称Android将需要以dpi设置的图像。

    在所有设备上都是相同的,因此它将根据它在该公式中计算的像素数进行缩放。