如何在Android中验证(数字)像素完美开发?

时间:2016-03-24 19:54:49

标签: android user-interface android-image qa

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截图有多大的期望?

有用的链接

1 个答案:

答案 0 :(得分:9)

您的帖子中有多个问题/想法。

开始:

  

如何将一个设备上的像素测量值转换为像素   测量另一个?

并且:

  

我设计了一款Android应用,所有屏幕均为720x1280   像素。

我会假设你的意思是你制作了一些720x1280的数字图像/ ux文档,现在正在为你的应用程序构建代码/加载图像并遇到问题,因为不同的设备在意外行为办法?如果这不准确,请纠正我。

一般来说,设计Android和移动设备至少在某种程度上要问自己用户希望体验什么,以及如何在框架的构建界面规则中实现这一目标。

Google states在处理多台设备时,您的目标应该是"密度独立性":

  

您的应用程序实现了密度独立性"当它保留了   用户界面的物理尺寸(从用户的角度来看)   在不同密度的屏幕上显示元素。

下面的图片代表"坏"设计(没有考虑到dp)

enter image description here

下面的图片代表良好的"密度无关"设计:

enter image description here

http://developer.android.com/guide/practices/screens_support.html#density-independence

换句话说,如果在设计和构建应用时考虑到密度独立性,用户应该在设备之间以一致的方式查看图像和/或视图。不应在Photoshop或类似设备上验证不同设备上的图像和视图,应在Android Studio中提供的模拟器和/或具有各种OS版本和/或屏幕尺寸的多个物理设备上完成(因为它们可供您使用) )。

要记住的另一件事是:

enter image description here

你问:

  

说另一种方式。如果我的@ 2x设计上的正方形是100px(50dp),那怎么样   我应该期待它在Nexus截图上吗?

enter image description here

转到Google Device Metrics页面:

enter image description here

点击Nexus 5x,然后从插入式面板查看设备信息:

enter image description here

根据此信息,Google Nexus 5x为424px / in,即424dpi

使用公式px = 50dp *(dpi / 160)

px = 132.5

在使用特定设备时,如何计算像素和dp大小的实际示例也很有价值,并希望这有助于您进入下一步回答问题将来以上。

假设我们有一些我们想要适合的图像"完美"当设备处于纵向时,跨设备。像这样:

enter image description here

让我们说我们的设备是Nexus 5.正如您在上面的示例中所看到的,从屏幕的左侧到右侧并排有7个相同的图像。通过以下示例,您可能应该能够找出" [您]期望[图像]有多大"对于各种情况:

  1. 我们知道Nexus 5是xxhdpi设备,因为我们在Google’s Device Metrics查找了它:
  2. enter image description here

    1. 让我们通过考虑填充来开始数学运算。我假设你默认有填充 - 在你的values / dimens.xml中检查它以确保:
    2. enter image description here

      我们需要考虑的是32dp。

      第3。接下来,我们知道Nexus 5的宽度是360dp或1080px,所以让我们计算出七张图像之一的宽度:

      让我们决定在输入密度为xxdpi的情况下输入我们的图像。

      360dp(全) - 32dp(填充)= 328dp(剩余7张图片)

      328dp / 7 = 46.9dp(约)

      让我们转到强烈推荐的转化网站androidpixels,然后查看以像素为单位的含义 - 在这种情况下,它等于140.7px。

      enter image description here

      1. 创建我们图像的png版本140.7px并将其导入为xxhdpi(我们将其导入到与设备相同的dp签名中)。
      2. 由于Adobe Illustrator和Adobe Photoshop不允许使用小数,因此您可以使用140,并在Android Studio中弥补间距的差异。数学表明,如果这7张图像之间有6个间隙,并且我们每张图像丢失了0.7px,那么我们可能需要考虑6 * 0.7px = 4.2px。

        1. 导入Final Android Resizer中的图像后,强烈建议用于调整图像大小 - 或者只是将其导入正确的可绘制文件夹 - 最后一步是:使用正确的图像更新content_main.xml,并确保为所有七个ImageView元素执行此操作:
        2. enter image description here

          这应该是最终的样子:

          enter image description here

          使用相关设备的尺寸再次执行这些步骤。

          这也不是唯一的方法。您可以使用布局目录来查明特定的设备尺寸并影响其中的视图。请参阅我对此所做的另一篇文章:

          Differences between scaling images with dpi as opposed to dp