怎么解决呢?
在Bitmap加载之前进行设置,降低图片解码后的图片宽高尺寸,以及图像采样率,降低内存占用。可以使用google官方推荐的图片压缩算法。
图片解码的时候,降低像素颜色信息,从ARGB4字节,转换为Android支持的短字节颜色如ARGB565,去掉透明度。

因为采用了复用,当listview滚动的时候,实际上显示的是之前加载过的item,之前的item中imageview的内容,就可能是之前其他条目加载的图片信息,这个时候,操作先显示其他条目的图片,之后开启了网络加载后,才会刷新为自身正确的数据。解决方式:在每次getview的时候,都将imageview显示的内容设置为“加载中”图片。覆盖原有旧的数据。
考虑到实际的人机交互情况,在ListView适配器中,在每一行中都不应该去触发任何异步操作。也就是说,在ListView中有fling(快速滑动)操作时,启动任何异步操作都没有任何意义。一旦滚动停止或即将停止,才是开始真正显示每行的内容的时候。
当快速滑动列表时(SCROLL_STATE_FLING),item中的图片或获取需要消耗资源的view,可以不显示出来;而处于其他两种状态(SCROLL_STATE_IDLE 和SCROLL_STATE_TOUCH_SCROLL),则将那些view显示出来。
具体的实现方式:
RecyclerView封装了viewholder的回收复用。
RecyclerView使用布局管理器管理子view的位置(目前尚只提供了LinearLayoutManager),也就是说你再不用拘泥于ListView的线性展示方式(即竖列的展示方式),如果之后提供其他custom LayoutManager的支持,你能够使用复杂的布局来展示一个动态组件。
自带了ItemAnimation,可以设置加载和移除时的,方便做出各种动态浏览的效果。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-39839-2.html
维护巴拿马主权
像你自己挣钱多