tl; dr如何将一台设备上的像素测量值转换为另一台设备上的像素测量值?
我设计的Android应用程序的所有屏幕尺寸为720x1280像素。我假设这是2.0 xhdpi,意味着数字像素尺寸为360x640 dp。
现在在QA中,我发现Nexus 5x上有一些不一致的内容,截取屏幕截图,并将它们拉到Photoshop中以确认/测量错误。 Nexus 5x为1080x1920像素,但为2.6 xxhdpi,转换为411x731 dp。
简单的规模不会失败吗?
将Nexus(1080宽度)屏幕截图拉入Photoshop并将其缩放到720宽度并不简单,对吗?这不考虑像素密度。
说另一种方式。如果我的@ 2x设计上的正方形是100px(50dp),那么我对Nexus截图有多大的期望?
有用的链接
答案 0 :(得分:9)
您的帖子中有多个问题/想法。
开始:
如何将一个设备上的像素测量值转换为像素 测量另一个?
并且:
我设计了一款Android应用,所有屏幕均为720x1280 像素。
我会假设你的意思是你制作了一些720x1280的数字图像/ ux文档,现在正在为你的应用程序构建代码/加载图像并遇到问题,因为不同的设备在意外行为办法?如果这不准确,请纠正我。
一般来说,设计Android和移动设备至少在某种程度上要问自己用户希望体验什么,以及如何在框架的构建界面规则中实现这一目标。
Google states在处理多台设备时,您的目标应该是"密度独立性":
您的应用程序实现了密度独立性"当它保留了 用户界面的物理尺寸(从用户的角度来看) 在不同密度的屏幕上显示元素。
下面的图片代表"坏"设计(没有考虑到dp)
下面的图片代表良好的"密度无关"设计:
http://developer.android.com/guide/practices/screens_support.html#density-independence
换句话说,如果在设计和构建应用时考虑到密度独立性,用户应该在设备之间以一致的方式查看图像和/或视图。不应在Photoshop或类似设备上验证不同设备上的图像和视图,应在Android Studio中提供的模拟器和/或具有各种OS版本和/或屏幕尺寸的多个物理设备上完成(因为它们可供您使用) )。
要记住的另一件事是:
你问:
说另一种方式。如果我的@ 2x设计上的正方形是100px(50dp),那怎么样 我应该期待它在Nexus截图上吗?
点击Nexus 5x,然后从插入式面板查看设备信息:
根据此信息,Google Nexus 5x为424px / in,即424dpi
使用公式px = 50dp *(dpi / 160)
px = 132.5
在使用特定设备时,如何计算像素和dp大小的实际示例也很有价值,并希望这有助于您进入下一步和回答问题将来以上。
假设我们有一些我们想要适合的图像"完美"当设备处于纵向时,跨设备。像这样:
让我们说我们的设备是Nexus 5.正如您在上面的示例中所看到的,从屏幕的左侧到右侧并排有7个相同的图像。通过以下示例,您可能应该能够找出" [您]期望[图像]有多大"对于各种情况:
我们需要考虑的是32dp。
第3。接下来,我们知道Nexus 5的宽度是360dp或1080px,所以让我们计算出七张图像之一的宽度:
让我们决定在输入密度为xxdpi的情况下输入我们的图像。
360dp(全) - 32dp(填充)= 328dp(剩余7张图片)
328dp / 7 = 46.9dp(约)
让我们转到强烈推荐的转化网站androidpixels,然后查看以像素为单位的含义 - 在这种情况下,它等于140.7px。
由于Adobe Illustrator和Adobe Photoshop不允许使用小数,因此您可以使用140,并在Android Studio中弥补间距的差异。数学表明,如果这7张图像之间有6个间隙,并且我们每张图像丢失了0.7px,那么我们可能需要考虑6 * 0.7px = 4.2px。
这应该是最终的样子:
使用相关设备的尺寸再次执行这些步骤。
这也不是唯一的方法。您可以使用布局目录来查明特定的设备尺寸并影响其中的视图。请参阅我对此所做的另一篇文章:
Differences between scaling images with dpi as opposed to dp