我的图片是我应用中一项活动的背景。
对于Samsung Galaxy S4,此图像应为1920x1080,并放置在xxhdpi文件夹中。 对于Nexus 10,此图像应为2560x1600,并放置在xhdpi文件夹中。
将图像放在xhpdi文件夹中比放在xxhdpi文件夹中的图像更大是无稽之谈。 而且因为我相信我误解了一些东西。
有人可以解释我误解的内容吗?
- 编辑 -
对于所有答案提问,如果nexus10真的是xhdpi和S4 xxhdpi:
prijupaul的答案很好,但我没有任何Nexus 10或Galaxy S4进行测试。我发现解决方案试图为两者创建AVD,在设备配置创建中它说明了它的配置。
答案 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