我已阅读多篇有关背景图片内存使用情况的帖子,例如this。
设置背景的代码
View view = findViewById(R.id.main_content);
Rect rect = new Rect();
view.getLocalVisibleRect(rect);
BitmapFactory.Options options = new BitmapFactory.Options();
options.outHeight = rect.height();
options.outWidth = rect.width();
options.inScaled = false;
Bitmap backgroundBitmap = BitmapFactory.decodeResource(getResources(), backgroundId, options);
view.setBackgroundDrawable(new BitmapDrawable(getResources(), backgroundBitmap));
出了什么问题?我还可以做些什么来缩减内存使用量?
答案 0 :(得分:1)
让BitmapFactory
为您提供低内存图片的技巧是在inSampleSize
上填写BitmapFactory.Options
。这会告诉BitmapFactory
在加载图像时对图像进行缩减采样,为您提供分辨率较低的图像,但是可以更好地调整图像以适应您计划使用的图像。您需要根据使用图像的inSampleSize
(或其他)的分辨率计算所需的ImageView
。
This sample app演示了如何从assets/
加载一些具有不同inSampleSize
值的图像。
答案 1 :(得分:0)
我也经历过这种情况,但图像要小得多。我发现这种情况正在发生,因为我对所有屏幕分辨率使用相同的图像大小。我建议您使用相同图像的不同尺寸,并将它们放在相应的文件夹中。