我已经开始使用Adobe Photoshop为我的Android应用制作图形了。但是我无法继续,因为Photoshop中的分辨率设置为每英寸像素,正如官方Google文档所说,Android将需要以dpi设置的图像。我在网上搜索了两者之间的转换,但从未得到任何适当的公式。
我知道Android文档将关系描述为px = dp*dpi/160
。但我的问题是,如果我知道dpi在哪里可以获得在此计算中使用的dp的值?或者是否有关于dp值的假设?我很困惑。
答案 0 :(得分:36)
Dp是密度独立像素,用于概括屏幕所具有的像素数。这些是来自http://developer.android.com/guide/practices/screens_support.html
的一般数字屏幕的通用Dpi值:
因此,您的资源的广义大小(假设它们是全屏):
修改 - 添加xhdpi,因为它们越来越受欢迎
这些值应该适用于大多数xhdpi屏幕,例如电视和Nexus 4,包括Nexus 10(假设他们没有为此创建一个新类别,因为它是25k x 16k,不知道我没有还没动手。)
<强> /修改
如果您使用这些尺寸,您的图像在任何屏幕上都会显得很棒。请务必在dp中定义代码中的大小,但Android会自行处理上述转换。
答案 1 :(得分:5)
我不同意迈克尔·艾伦的回答,因为ldpi,mdpi,hdpi和xdpi的最终分辨率不满足谷歌文档中提到的替代位图的3:4:6:8比例缩放比例替代Drawables'
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 px(mdpi)
现在要遵循3d:4:6:8缩放比例,以获得ldpi,hdpi和xhdpi的替代drawables尺寸,我们需要从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
hdpi
117.5 * 6 = 705
80 * 6 = 480
xhdpi
117.5 * 8 = 940
80 * 8 = 640
这些尺寸现在具有完美的3:4:6:8缩放比例。
答案 2 :(得分:1)
是的,Dp(密度独立像素)是Photoshop所关心的。它不应该考虑像素的密度。可以将超高像素数的图像放在超小高清UI按钮上,以满足它所关心的所有需要。或者你可能只有几个像素的俄罗斯方块的复古风格A0海报。这是因为它们可以缩放。对于大面积放大的像素很少,并且屏幕上的小区域缩小了许多像素。
因此,选择目标link to sizes屏幕尺寸并在photoshop中使用它。 (还要查看谁使用了什么... pie chart of sizes used)
为了直觉,这个网站帮助了我link to blog page:
在运行时,平台根据正在使用的屏幕的实际密度透明地处理所需的dp单位的任何缩放。
(平台进行缩放 - 密度比处理由Android完成;不是你),这与UI非常相关:
强烈建议使用dp单位定义应用程序的UI,以确保在不同屏幕上正确显示UI。
因为您希望UI元素在所有设备上显示相同,所以它将根据它在该公式中计算的像素数进行缩放。如果 dp 以某种方式进行缩放,使其变得过于冗余或密集,那么看起来不会很好。
答案 3 :(得分:1)
由于Photoshop中的分辨率设置为每英寸像素,因为官方Google文档称Android将需要以dpi设置的图像。
答案 4 :(得分:0)
在所有设备上都是一样的,所以它会根据它在公式中计算的像素数进行缩放。