0

我试图在我的 TextView 中放置一个图像作为背景。我希望通过按一个按钮来更改图像。在第一个图像被加载但当我下次尝试时它说 OutOfMemoryError。

我的代码:

int [] Quo = {R.drawable.wallpaper10,R.drawable.wallpaper2,R.drawable.wallpaper3,R.drawable.wallpaper4};
txtView.setBackgroundResource(Quo[j] );

如果我给它,它会完美地工作

txtView.setBackgroundResource(Quo[0]);

我是android开发的新手,请帮我解决问题。

4

1 回答 1

-1

图像内存使用基于多种因素:

  1. 图像的分辨率。
  2. 图像文件所在的位置(可绘制文件夹的密度限定符)与应用程序运行的屏幕密度相比。
  3. 您使用了哪种位图格式。
  4. 图像是否为 9-patch 图像。

因此,例如,如果您有一个 100x100 的图像,并且该文件位于“drawable-mdpi”中,但它在 xhdpi 设备上运行,并且位图格式是默认格式,并且它不是 9-patch 图像,位图将采取:

100*100 * 4 *4 = 160,000 字节。

100*100 是因为宽度和高度的像素数。

前 4 个是因为在默认位图格式上,每个像素占用 4 个字节。

第二个 4 是因为密度在宽度和高度上都是 2 倍(2*2=4)。

所以,如果这是你展示的唯一代码,我认为你因为你的图片而使用了太多的内存。

您可以做的一件事是对它们进行下采样。

于 2013-04-02T22:37:31.173 回答