android瀑布流图片无限多,内存溢出 这是个问题啊,会提示VM不会分配这么大的内存。网上有一些解决方案,但是感觉不是很合理。我也越到了图片内存的问题。不过,我是自定义VIew。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/jefferyyangkai/article/details/7016829 图片很吃内存的List模式时尽量用低分辨率的图片detail(单张)模式时先用低分辨加载,再慢慢加载高清的 我的问题昨天下午解决了,你使用控件来显示,我不太清楚怎么回收。我的是几个游戏界面相互切换,而且图片也非常多,最后就是重新定义一个回收函数,在加载另外一个View的时候,循环释放之前View的Bitmap,效果不错,没有遇到这个OOM了。 你是自定义一个AdapterView吗? 现在问题是LinearLayout不会重用界面,ImageView不能重用,所以对应的图片也没法释放 如果数据比较多,果断用listview啊,adapter只会加载当前在界面上显示的数据,当你要显示非常多数据的时候,你会发现用listview的性能比scrollview要强多了 问题是现在要做瀑布流啊,listview满足不了这样的需求 其实还是得有ListView的方式才能满足无限量图片你可以用多个ListView的方式并排实现,每个ListView自定义getView,可以使listView的每条记录高度不受固定限制,例如通过获取图片的尺寸高度来设置listview的高度。 那拖动的时候,两边listview怎么同步呢 每个ListView都setOnScrollListener、setOnTouchListener,同步滚动。 你可以反编译下美丽说的apk看看,他们用的基本都是自定义的View。 为了节省内存,他们会在每次滚动后判断该图片是否还在屏幕内,不在就释放掉。 是啊,自定义的veiw,兄台有没有办法 解决这个问题,主要有三个方面,1软引用 2后台读取图片(如果图片是从网上读取的话) 3缓存图片到SD卡部分代码如下(我的是ExpandableListView):SoftReference<Bitmap> bitmap = null;//软 引用 if(iconName != null && !iconName.equals("")) { childViewHolder.gameIconImage.setTag(iconName); bitmap = new SoftReference<Bitmap>(bitmaputil.getFileImage(EVENTICONPREURLPATH + iconName));//bitmaputil.getFileImage为从sd卡上取图片 if (null == bitmap || null == bitmap.get()) { AsyncImageLoader asyncImageLoader = new AsyncImageLoader( context, childViewHolder.gameIconImage); asyncImageLoader.execute(EVENTICONPREURLPATH + iconName);//如果sd卡上不存在该图片 启动后台进程从网上读取图片 同时缓存的sd卡上 } else { childViewHolder.gameIconImage.setImageBitmap(bitmap.get()); } } 软引用的前提是没有view用这些图片数据,view是可以重用的 android图片缓存 (1).使用简单 (2).轻松获取及预取新图片 (3).可选择多种缓存算法(FIFO、LIFO、LRU、MRU、LFU、MFU等13种)或自定义缓存算法 (4).省流量性能佳(有且仅有一个线程获取图片) (5).支持不同类型网络处理 (6).可根据系统配置初始化缓存 (7).扩展性强 (8).支持队列 (9).包含map的大多数接口。 可见:http://www.trinea.cn/?p=704 可以看看这个例子 http://pan.baidu.com/s/1dD5sxTf 关于使用Matrix进行图片旋转的问题 android 关于treeview 中加入checkbox surfaceview调用Camera功能和使用Canvas画板 android Gallery怎样实现多点触摸 一个比较麻烦的问题 android 基站定位问题 android bringchildtofront问题 求助安卓使用KSOAP2出错! 关于SQLite使用insert()增加数据的问题。 新手代码问题,没用到数据库却显示数据库安全性不好 Activity自动切换到后台, 什么原因呢? phonegap + jquerymbile 输入法输入问题
List模式时尽量用低分辨率的图片
detail(单张)模式时先用低分辨加载,再慢慢加载高清的
每个ListView都setOnScrollListener、setOnTouchListener,同步滚动。
SoftReference<Bitmap> bitmap = null;//软 引用
if(iconName != null && !iconName.equals("")) {
childViewHolder.gameIconImage.setTag(iconName);
bitmap = new SoftReference<Bitmap>(bitmaputil.getFileImage(EVENTICONPREURLPATH + iconName));//bitmaputil.getFileImage为从sd卡上取图片 if (null == bitmap || null == bitmap.get()) {
AsyncImageLoader asyncImageLoader = new AsyncImageLoader(
context, childViewHolder.gameIconImage);
asyncImageLoader.execute(EVENTICONPREURLPATH + iconName);//如果sd卡上不存在该图片 启动后台进程从网上读取图片 同时缓存的sd卡上
} else {
childViewHolder.gameIconImage.setImageBitmap(bitmap.get());
}
}