0

我有一张图像,它是我的应用程序中一项活动的背景。

对于三星 Galaxy S4,此图像应为 1920x1080 并放置在 xxhdpi 文件夹中。对于 Nexus 10,此图像应为 2560x1600 并放置在 xhdpi 文件夹中。

在 xhpdi 文件夹中放置比在 xxhdpi 文件夹中放置的图像更大的图像是无稽之谈。因为我相信我误解了一些东西。

有人可以解释我误解了什么吗?

- 编辑 -

对于所有质疑nexus10是否真的是xhdpi和S4 xxhdpi的答案:

prijupaul 的答案很好,但我没有任何 Nexus 10 或 Galaxy S4 可以测试。我发现了试图为两者创建 AVD 的分辨率,在设备配置创建中它说明了它将是什么配置。

4

5 回答 5

3

资源类“hdpi”、“xhdpi”和“xxhdpi”与分辨率(普通像素的宽度和高度)无关,但与密度(每英寸屏幕的像素数)有关。

S4 具有较低的分辨率,但可以具有更高的密度,因为它的屏幕更小。

我认为它在文档(developer.android.com)中得到了很好的解释。检查以获取更多详细信息。

于 2013-09-25T12:45:58.707 回答
2

如果分辨率确实很重要,那么您应该使用除 xhdpi 之外的另一个限定符。您可以使用例如 drawable-sw720dp(针对 10 英寸平板电脑)。

不过,我个人的意见是,您应该只为每个宽高比提供一个最大尺寸的版本。然后在运行时计算该纵横比并从资产中选择最佳图像。

于 2013-09-25T12:42:36.557 回答
1

S4不是xhdpi吗?你验证使用

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int density = dm.densityDpi;
switch(density)
{
 case DisplayMetrics.DENSITY_LOW:
  Toast.makeText(context, "ldpi", Toast.LENGTH_SHORT).show();
  break;
 case DisplayMetrics.DENSITY_MEDIUM:
  Toast.makeText(context, "mdpi", Toast.LENGTH_SHORT).show();
  break;
 case DisplayMetrics.DENSITY_HIGH:
  Toast.makeText(context, "hdpi", Toast.LENGTH_SHORT).show();
  break;
 case DisplayMetrics.DENSITY_XHIGH:
  Toast.makeText(context, "xhdpi", Toast.LENGTH_SHORT).show();
  break;
 case DisplayMetrics.DENSITY_XXHIGH:
  Toast.makeText(context, "xxhdpi", Toast.LENGTH_SHORT).show();
  break;
}

这没有回答问题。但是,这可能有助于再次检查它。

于 2013-09-25T01:16:06.290 回答
0

我认为它即将' PPI '。Galaxy s4 有 441 ppi,但 Nexus 10 有 300 ppi。

于 2013-09-25T01:23:31.467 回答
0

你确定nexus10的图像应该在xhdpi文件夹中吗? Nexus10有300ppi,这和dip不同。访问Android XXHDPI 资源

应该是这样的,s4:xhdpi nexus10:xxhdpi

于 2013-09-25T06:00:15.843 回答