【问题标题】:Android image sizesAndroid 图像大小
【发布时间】:2011-12-04 00:06:19
【问题描述】:

我开始使用 android 开发,我有几个关于支持不同屏幕尺寸的问题。我已经阅读了所有关于它的内容here,但仍然不知道如何为不同的屏幕使用不同大小的图像。我的情况是,我在 res/drawable/hdpi 中放置了一张图片,在我的 samsung infuse 4g 和我的 Galaxy 10.1 平板电脑上运行时会获取该图片。因为它们具有相同的密度等级,所以图像在两个设备上的物理尺寸大致相同。这就是问题所在,显然我希望我的平板电脑上的图像更大,但我还没有找到一种方法来做到这一点。

我确实查看了另一种分类,即小、中和大,但它似乎只适用于布局而不适用于图像资源。

任何指针将不胜感激。

谢谢!

【问题讨论】:

  • "small、medium 和 large 但似乎只适用于布局" - 这不是真的。您也可以将这些应用于图像资源。
  • 不是 res/drawable/hdpi,应该是 res/drawable-hdpi
  • 感谢 Arhimed,这甚至都没有考虑过。在我阅读的所有地方,它都只用于布局。

标签: android resources size screen


【解决方案1】:

这两个设备的密度不同。 Samsung Infuse 是 hdpi,Galaxy Tab 10.1 是 mdpi。

此外,您通常不希望平板电脑上的图像变大。考虑一下——如果我的应用程序中有一个联系人列表,我希望它们在手机和平​​板电脑上的高度相同,因为让它们更高是没有用的(这个高度足以显示文本并能够用我的手指点击它),但我想做的是使用额外的空间来显示更多。

如果您确实希望平板电脑上的图片比手机上的图片大,那么您需要详细说明您实际想要完成的工作。例如,也许这是一张背景图片?在这种情况下,您可能正在寻找的只是让图像拉伸以填满屏幕。 (请注意,在 Android 上制作背景图片很棘手,因为您确实需要处理各种适合您的屏幕尺寸。为了避免让自己发疯,背景图片通常应该非常抽象,以便拉伸效果很好以 Android 3.0 和 4.0 中使用的背景图片作为默认主题。)

如果您正在编写游戏,这是一个非常不同的世界,您应该考虑是否要使用基于密度的资源。一般来说,游戏的资源与密度无关,只是让他们的游戏区域填满屏幕,并且对平板电脑上更大的结果感到满意。

【讨论】:

  • 感谢您的回答。是的,我应该更详细地解释一下。我想做一个简单的数独益智棋盘游戏,它是我想要在更大屏幕上更大的棋盘。让 android 为我缩放它的问题在于,我无法知道我用来计算点击了哪些单元格的边框有多大。就像你说的,有太多的组合需要考虑。我在想也许我可以使用设备的尺寸在代码中绘制电路板,而不是将其作为 png 图像。
  • 只需制作您的 PNG 图像 -nodpi 并将其缩放以适应屏幕。也就是说,您将需要对顶部的东西进行自己的自定义布局或绘图(无论您想要什么),以便它以与电路板对齐的相同方式缩放。
  • @hackbod 我有一个关于游戏开发段落的问题。你的意思是 nodpi 文件夹还是其他一些技巧?我在这个话题上缺乏经验,提出问题会导致投反对票,并且过于宽泛或离题。
【解决方案2】:

例如放入图片后

/res/layout-480x800` - if you know resolution
/res/layout-w480dp - if you know witdh
/res/layout-h800dp - if you know height

Android 会自动为您选择图片。只需将图片以分辨率但名称相同的方式放入此子文件夹中。然后只需使用(不使用 spacyfing 限定符):

android:src="@drawable/background"

imageView.setImageResource(R.drawable.background);

限定符的优先顺序可以在documentation(表2)中找到

【讨论】:

  • 酷。似乎有很多方法可以组织您的资源。如果设备配置有多个类似的匹配项,您如何知道哪一个会被选中?
  • 好问题,我找到了答案并编辑了我的帖子。在这里显示存在developer.android.com/guide/topics/resources/…
  • 真的有用吗?布局用于 XML 文件,PNG 构建失败。
  • 您是否尝试过点击上面的链接?您可以对可绘制目录执行相同操作。
【解决方案3】:

平板电脑通常是 xhdpi,而不是 hdpi。因此,对于您的 Samsung Infuse,请将图像放入:

/res/drawable-hdpi/

对于平板电脑,将其放入:

/res/drawable-xhdpi

通过设置图片资源时

android:src="@drawable/image"

imageView.setImageResource(R.drawable.image);

它将根据设备的密度选择合适的图像。

【讨论】:

  • 嗨尼克。但对我来说问题是我想要基于屏幕尺寸而不是密度的不同资源。我想我可以使用 res/drawable-[small |中 |大] 代替。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2013-04-05
  • 2011-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
相关资源
最近更新 更多