适用于三星Galaxy S4和Nexus 10的Android绘图

时间:2013-09-25 00:59:26

标签: android android-layout android-drawable

我的图片是我应用中一项活动的背景。

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

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

有人可以解释我误解的内容吗?

- 编辑 -

对于所有答案提问,如果nexus10真的是xhdpi和S4 xxhdpi:

prijupaul的答案很好,但我没有任何Nexus 10或Galaxy S4进行测试。我发现解决方案试图为两者创建AVD,在设备配置创建中它说明了它的配置。

5 个答案:

答案 0 :(得分:3)

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

S4的分辨率较低,但由于屏幕较小,因此密度较高。

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

答案 1 :(得分:2)

如果分辨率确实很重要,那么你应该使用另一个限定符而不是xhdpi。你可以使用例如drawable-sw720dp(目标10“平板电脑)。

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

答案 2 :(得分:1)

Isnt 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;
}

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

答案 3 :(得分:0)

我认为这是'PPI'。 Galaxy s4有441 ppi但Nexus 10有300 ppi。

答案 4 :(得分:0)

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

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