我应该支持哪些屏幕尺寸/密度组合的位图背景图像?

时间:2011-03-22 15:11:16

标签: android drawable resolution-independence screen-size

我正在编写一个应用程序,我需要一些全屏位图背景。基于我在Android文档中对Supporting Multiple Screens的天真阅读,为了涵盖我的所有基础,我应该有16个版本的每个位图:所有[ small, normal, large, xlarge ][ ldpi, mdpi, hdpi, xhdpi ]对。这样可以减少CPU在缩放图像时必须完成的工作,但这会带来很大的存储成本。

然而,由于两个原因,这似乎非常低效:

  1. 并非所有这些组合都在实践中找到。
  2. 由于我只是为每个物理尺寸渲染矢量图(不考虑DPI),像big / mdpi和normal / hdpi(都是〜480x854像素)这样的对是重复文件。
  3. 那么,我应该提供真正大的图像并让系统缩小它们吗?咬紧牙关并提供大量重复图像?完全避免这个问题并用原始资源拼凑一些代码解决方案?还有其他想法吗?感谢。

    编辑:显然,您可以创建XML位图drawables,它们可以为实际位图添加别名。这解决了第二个效率低下的问题。不过,我想知道,其他人在实践中提供了哪些组合?

2 个答案:

答案 0 :(得分:0)

如果您希望该艺术作品的大小不变,您只能提供不同分辨率的图像,无论它显示在哪个屏幕上。图标或按钮就是一个例子。

对于此处描述的背景图像,您不关心图像dpi是什么 - 您只关心x * y尺寸是什么。因此,您不必生成大小与dpi的交叉积。您只需要考虑4种屏幕尺寸类别。

在4个屏幕尺寸类别中,您只需要存储较大尺寸(xlarge或大尺寸)中的一个,并让框架根据需要向上或向下缩放。您还可以通过编程方式进行缩放,以确保不会更改背景的宽高比,也不会裁剪它。

另见Android game working on all screen sizes,希望能有更好的答案。

答案 1 :(得分:-1)

我建议为ldpi,mdpi,hdpi和xhdpi(取决于你的目标用户)提供图像。这将允许您覆盖最常用的分辨率。

如果最终感觉应用程序过大(通过决定添加所有可能的图像大小或其他原因),您还可以考虑将应用程序移动到SD卡。这样,存储将不再是一个问题。 (http://developer.android.com/guide/appendix/install-location.html