我已经测试过使用Photoshop将图像资源调整为MDPI和HDPI分辨率大小后,与仅调整为XHDPI分辨率大小并由Android进行调整的结果进行比较,但是我无法看出任何差异。采取这种捷径是否会导致糟糕的设计?不用为每个图像资源调整3种不同的分辨率将非常理想。
计划使用的目标SDK版本是2.1或2.2。
敬礼 Emil
我认为这是一个不错的做法。我能想到的唯一缺点是小型设备上的资源开销和由于缩放而可能产生的伪影。实际上,在今年的Google IO大会上,Chris Pruett建议仅嵌入高分辨率素材,让OpenGL处理缩放。
我在一个简单的应用程序(为Android 2.1开发)中进行了测试,仅使用xhdpi图像,在小,中和高分辨率下都可以正常工作...即使我在Android 2.1(小分辨率)上进行了测试,也可以正常打开图像。
也许内存方面的问题是真的,所以需要有人来测试一下。
只有xhdpi资源是可以的。但请注意,xhdpi是在api级别9(姜饼)中引入的。也就是说,如果您的目标api级别小于等于8,则至少需要hdpi资源。
XHDPI是在Android SDK API Level 9(Gingerbread)中引入的(请参见http://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_XHIGH),因此,如果您计划将最低SDK级别设置为小于9,则还需要提供至少HDPI可绘制对象,否则Froyo或以下设备将显示空白。
更新:实际上,似乎在Gingerbread之前的版本中也会显示xhdpi图像:https://groups.google.com/d/msg/android-developers/yjYO91OmoJ4/v3he0ZbKo-UJ
关于额外内存使用的说法是错误的。
如果你把 XHDPI
大小的可绘制对象放在 MDPI
文件夹中,那么你将会遇到内存问题。
但是,如果你在 XHDPI
文件夹中提供 XHDPI
可绘制对象,则不会使用额外的内存,因为 Android 通过跳过部分图像来降低采样率。
这种“跳过”是为什么你需要为每个你计划支持的密度提供可绘制对象以使它们看起来好看的原因。
另一方面,只有某些图像在降采样时会变得模糊(主要是小图标),因此只要图像有足够的数据可以被丢弃,它就会看起来不错。或者想象一下,如果你有一个网格作为可绘制对象,那么潜在地一些网格线可能会被丢弃,从而使图像看起来很糟糕。
最后,最好让你尝试不同的设备,然后你就可以知道哪些可绘制对象需要针对其密度提供替代资源。