图像在Android设备中完美设置< 4.0但不是套件> 4.0设备.
请帮我解决这个问题.
码
<ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="fitXY" android:contentDescription="@string/name" android:src="@drawable/hindi" />
这里印地文是一个可绘制文件夹中的图像,其大小为270 x 2693像素.
解决方法
此问题通常与OpenGL最大纹理大小或设备内存有关.你得到的完整错误可能是这样的
W/OpenGLRenderer(12681): Bitmap too large to be uploaded into a texture (270×2693,max=2048×2048)
内存通常是大尺寸图像的问题,但在您的情况下270×2693是727110像素.如果您使用RGBA,则每像素4个字节,因此727110 * 4 = 2908440字节,大约为2,7兆字节.这应该适合任何设备.
因此,您的问题可能与OpenGL有关.可能发生的是Android设备> 4.0您正在测试检测到您的图像对于OpenGL而言太大并为您调整大小,而旧设备则没有.
编辑:
在我的情况下,问题是我的640×1136启动图像似乎自动重新调整为1280×2272图像大小,以适应我的设备巨大的屏幕.这也会触发您遇到的错误消息.
如果再次出现此错误,则与用于加载图像的dpi有关.正如您将在Android参考上找到的那样,设备将加载关于其dpi的图像,这可能会改变内存中加载的图像的大小.
解
>除了检测设备大小之外,您没有太多选择
正确加载图像.
了解如何load large bitmap in memory.
>您还可以为不同的设备dpi使用不同的图像大小
可以从Android自动从Drawable文件夹中选择.
请参阅How to support screens,它告诉您如何设置您的
夹.
>如其他所述,使用较小的图像或减小其大小.
相关信息
如果你需要support multiples screens,我建议你去看看.
Android还会收集其用户在Screens size每7天更新一次的数据.
另请参阅this interesting answer,它指出了一个了解内存中图像大小的好网站.
最后,如果您已在应用程序中使用OpenGL,请查看this answer which shows how to detect the max OpenGL texture size.