andbase中的demo中实现了一个瀑布流,采用3列的结构,展现了一个合理释放资源的方案,在下载图片时不管你的图片多大,在andbase中都将按照合理的方式显示出来,对于超过4096x4096的图片采用了缩放加裁剪的策略,使其读入到内存不会Bitmap
too large to be uploaded into a
texture,同时在对不显示的Bitmap进行释放,就可以达到效果,可能要牺牲一点效率,但稳定性会大幅度提高。
图中最右边的图其实是很长很长。
对于OOM需要检查一下几个要点:
(1)单张图片超过4096x4096的处理方案,因为这么大的图UI是无法显然显示的。
(2)总内存的控制,合理安排释放不用的资源。
//图片的下载
AbImageLoader mAbImageLoader =
AbImageLoader.newInstance(this);
mAbImageLoader.setLoadingImage(R.drawable.image_loading);
mAbImageLoader.setErrorImage(R.drawable.image_error);
mAbImageLoader.setEmptyImage(R.drawable.image_empty);
//原图片的下载
mAbImageLoader.setMaxWidth(0);
mAbImageLoader.setMaxHeight(0);
mAbImageLoader.display(scaleView,imageUrl);
//缩放图片的下载(保持宽高比,计算缩放比例,使一个方向缩放后,另一方向不小与显示的大小的最合适比例)
mAbImageLoader.setMaxWidth(150);
mAbImageLoader.setMaxHeight(150);
mAbImageLoader.display(scaleView2,imageUrl2);
//放大图片的下载
mAbImageLoader.setMaxWidth(180);
mAbImageLoader.setMaxHeight(180);
mAbImageLoader.display(scaleView3,imageUrl3);