Android有效地加载了许多图像

时间:2015-10-15 06:13:37

标签: java android memory imageview

我有很多PNG图像包含在各种Drawable文件夹中(Drawable-xhdpi,Drawable-mdpi等)它们都相对较小(最多像10KB)但是有一点我需要加载大约50个他们到屏幕上。当我这样做时,它会导致OutOfMemoryError。理想情况下,我希望能够通过简单地调用setContentView一次来加载这些图像(内容视图有一堆ImageViews,其src属性已经设置为相应的图像)。这就是我现在正在做的事情,但当然由于内存错误而无法正常工作。除了减小图像的大小,有没有办法防止OutOfMemoryError?

1 个答案:

答案 0 :(得分:1)

避免一次性加载此数量的图像, 相反,您可以按here所述的GridView加载它们。

PicassoGridView一起使用以提高内存效率

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;
}