我有需要缩放到屏幕大小的图像。图像中也会有文字,需要翻译成第二种语言。因此,每个图像都会有两个版本开始,每种语言都有一个版本。减少Android可选择的可绘制资源
Google建议每个密度都有一个图像资源。所以我会把我的两个图像乘以4:xhdpi,hdpi,mdpi和ldpi。但随后谷歌说不同的屏幕尺寸有不同的图像资源。这使我的图像再乘以4:xlarge,large,normal和small。我不想创建每个图像的32份副本!
我想知道是否有任何错误,使xlarge屏幕和xhdpi密度的图像只。 IE - 最好的质量。让Android按照dp单位的标准缩小图像的密度以降低密度。当我在较小的屏幕上画画时,我可以使用Canvas类进一步缩小比例。每次需要重绘位图时,我都可以缓存生成的缩放比特图对象,以避免昂贵的缩放计算一遍又一遍地运行。
这样做有什么缺点吗?还是有更好的方法来避免制作同样图像的这么多副本?
谢谢,很好的反馈。澄清一点:我希望通过缓存缩小的位图,然后它应该垃圾收集原始较大的图像。我不认为这个一次性GC事件会影响到这个特定应用程序的差异。但是,你知道缩减后的缓存位图实例是否会具有相同的内存占用量,还是会比使用Google的备用资源方法实例化时大? (假设两种方法都会产生相同物理尺寸的位图。)如果尺寸较大,那么对我来说这可能是个问题。谢谢! – 2012-04-04 14:47:21
好问题。我不确定你打算如何缩减比例,所以很难给出最终答案(只要我知道:-))。你可以做以下(间接)测试:从资源加载一个位图后,我假设isMutable()将返回false。我想在缩放之后,得到的位图将具有isMutable()= true,间接表明它是一个副本,因此可能拥有自己的内存。 – 2012-04-04 14:56:21