自动放大的记忆差异与无比例的较大图像

时间:2015-04-01 21:00:23

标签: android image bitmap scale resolution

我在创建OutOfMemoryException时遇到意外发生Bitmap的游戏。

对于某些资源,我只在drawable文件夹中使用一个图像( MDPI )。这意味着 HDPI XHDPI XXHDPI 没有单独的图片。

当分辨率较高时,

Android会自动向上扩展它们。

我的问题是:如果我在游戏中放入最初为每个单独分辨率放大的图像,那么记忆效率是否更高 - 例如 HDPI 的图片, XHDPI 的图片,让Android无需转换并重新调整内存中的Bitmap,或者使用单曲更好更高效仅针对 MDPI 和Android进行重新缩放的图片。

我认为在那个方向上,因为我不知道Android内部需要多少内存才能在创建位图时重新缩放图像,并且在每种情况下Bitmap内存都会更大或更小。但这似乎是一种可能的选择。

2 个答案:

答案 0 :(得分:1)

您可以在drawable-nodpi中使用您的图像,因此不会根据不同的密度进行缩放。 当Android将图像缩放到dencity手机时,手机正在使用内存,再次缩放图像后,您正在使用更多内存,并将抛出OutOfMemoryException。

你会把:

android:largeHeap="true"

例如:

<application
    android:icon="@drawable/icon"
    android:theme="@style/TecnoblindsTHEME"
    android:largeHeap="true"
    tools:replace="android:icon,android:theme"
    android:label="@string/app_name"
 >

检查显示位图优化:

  

http://developer.android.com/training/displaying-bitmaps/index.html

答案 1 :(得分:1)

在效率和性能方面,提供缩放图像几乎总是更好的主意,而不是让Android为您完成。

话虽如此:在Android中 - 自动缩放而不是预缩放可能会使CPU更加昂贵,但占用的内存更少。除非你不在同一个会话中改变图像的比例,否则它应该不是问题。