2

我有一个由 API 支持的 Android 应用程序。用户可以向此 API 上传照片。然后需要根据几个类别将这些照片缩放到几个不同的密度。

有没有推荐尺寸的地方或以前解决过这个问题的人?

我想我需要填写这个网格,以知道将图像调整(缩小)到什么尺寸(假设用户上传了一个 4000x4000px 的图像,或者其他什么):

Role / Screen | LDPI | MDPI | HDPI | XHDPI |
--------------------------------------------
Icon          |   ?  |   ?  |   ?  |   ?   |
--------------------------------------------
Thumbnail     |   ?  |   ?  |   ?  |   ?   |
--------------------------------------------
Full          |   ?  |   ?  |   ?  |   ?   | 

然后 API 将返回一个 JSON 响应,如下所示:

{
  resources: {
    icon: {
      ldpi:  "path",
      mdpi:  "path",
      hdpi:  "path",
      xhdpi: "path",
      raw: "path"
    },
    thumbnail: { ... },
    full: { ... }
  }
}

然后,客户端设备可以检查自身的密度,并使用适当的密钥路径来渲染图像。

我知道据此 “你应该遵循 3:4:6:8 的缩放比例”,但是你怎么知道应该使用什么尺寸的图像来缩放其他图像?

编辑:如果我的问题过于笼统,这里是精简版:我应该将用户上传的原始图像缩小到什么尺寸,以便它们在各种 Android 设备屏幕上看起来最好?

4

2 回答 2

6

如果我正确理解您的要求,那么事情比您做的要容易。您已经了解 3:4:6:8 的比例,所以这只是您或您的“权力”决定您希望“图标”、“缩略图”和“完整”中的每一个有多大的问题现实生活,然后做数学。

换句话说,缩略图没有“正确”的大小,只有正确的比例才能使它们在不同设备上看起来一致。希望缩略图有多大?

对于初学者,您可以对“图标”使用与 Android 启动器图标相同的尺寸,将“缩略图”的每个尺寸加倍,并为“全屏”使用平均全屏:

Role / Screen |  LDPI  |  MDPI  |  HDPI  |  XHDPI  |
----------------------------------------------------
Icon          |  36x36 |  48x48 |  72x72 |  96x96  |
----------------------------------------------------
Thumbnail     |  72x72 |  96x96 | 144x144| 192x192 |
----------------------------------------------------
Full          | 240x320|320x480 | 480x800| 720x1280| 

如果您已经知道其中一个与您想要的不同,只需一次更改整行,保持 3:4:6:8 的比例。如果这看起来是一个好的开始,那么做一个模型,看看它的样子。如果模型显示缩略图应该大一点,则将它们全部向上推,保持比例。

基本上可以归结为:

  1. 选择一个测试设备并进行实验。
  2. 当你有你喜欢的尺寸时,使用 3:4:6:8 的比例来确保你的身材看起来不错,并且在“各种各样的 Android 设备屏幕”上工作得很好。
  3. 在具有不同密度和屏幕尺寸的其他设备上进行测试,以确保您选择的尺寸和您设计的布局能够适应您仍然会遇到的微小差异,即使在使用正确的比例后,并在必要时进行调整。

最后,我同意@Devunwired 的观点,即您最好不要只看屏幕密度限定符,还要看屏幕尺寸。

于 2012-06-14T08:47:47.140 回答
1

使用每个存储桶的平均设备分辨率来帮助指导您的扩展工作:

  • LDPI 通常在 QVGA (240x320) 左右
  • MDPI 通常在 HVGA (320x480) 附近
  • HDPI 通常在 WVGA (480x800) 左右
  • XHDPI 通常约为 720p (720x1280)

唯一需要注意的是平板电脑。这些数字代表平均手机分辨率。例如,7" 或 10" 平板电脑通常也归类为 MDPI,但分辨率为 1024x600 或 1280x800。

因此,如果您希望通过使用资源限定符对图像进行分类以直接在 JSON 中抓取,您可能还需要添加物理尺寸项目(即normal, largexlarge来解决这个问题,或者对键使用更通用的命名方案.

高温高压

于 2012-06-05T19:50:57.283 回答