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

Ruc*_*ira 25 android dpi

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

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

Mic*_*len 37

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会自行处理上述转换.

  • @MichaelAllen你从来没有提到屏幕的大小?dp x dp表示物理大小,所有计算均来自屏幕的dp x dp物理大小.您的主要**INCORRECT**假设是屏幕尺寸=屏幕密度.你总是计算一个小屏幕ldpi(错误),正常屏幕总是mdpi(错误),等等.你的例子显示4个密度的4个屏幕尺寸.实际上,每个屏幕尺寸需要4个密度尺寸,因此这里有16个尺寸(现在有5个,所以真的有20个).证明 - http://developer.android.com/about/dashboards/index.html#Screens. (6认同)
  • 对不起,我想我想念一下这个问题.你说Photoshop需要每英寸像素值的大小,但事实并非如此.PPI设置仅在您要打印时使用,对于屏幕,您唯一感兴趣的是图像的大小(以像素为单位).对于Android图像使用我上面给出的像素值,它们将在任何显示器上提供清晰的图像.例如,对于hdpi,全屏纹理应为960px x 720px,并且可以具有任何dpi或ppi值.然后使用dp确保它填充android中的屏幕.这意味着如果换成较小的图像,它仍将填满屏幕 (4认同)
  • 哇,这真是令人难以置信的**错误**,我无法相信它得到了这么多的赞成.屏幕密度和屏幕尺寸不一样.平板电脑可以是ldpi,小巧的手机可以是xhdpi,反之亦然.这些计算都是不正确的,因为对于每个密度,160 dp约为1英寸.SMH ... (4认同)
  • 感谢您的解释.它在很大程度上有所帮助.但仍然将屏幕分辨率从dpi转换为ppi的困惑仍然存在.所以我使用以下链接来表达我对屏幕分辨率的假设: - http://en.wikipedia.org /维基/ List_of_displays_by_pixel_density (2认同)

小智 5

我不同意迈克尔·艾伦的答案,因为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比例.