我有很多PNG图像包含在各种Drawable文件夹中(Drawable-xhdpi,Drawable-mdpi等)它们都相对较小(最多像10KB)但是有一点我需要加载大约50个他们到屏幕上。当我这样做时,它会导致OutOfMemoryError。理想情况下,我希望能够通过简单地调用setContentView一次来加载这些图像(内容视图有一堆ImageViews,其src属性已经设置为相应的图像)。这就是我现在正在做的事情,但当然由于内存错误而无法正常工作。除了减小图像的大小,有没有办法防止OutOfMemoryError?
答案 0 :(得分:1)
避免一次性加载此数量的图像,
相反,您可以按here所述的GridView
加载它们。
将Picasso与GridView
一起使用以提高内存效率
public View getView(int position, View convertView, ViewGroup container) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
} else {
imageView = (ImageView) convertView;
}
// Load image into ImageView "using Picasso"
Picasso.with(mContext).load(imageResIds[position]).into(imageView);
return imageView;
}