这个可以实现ImageView异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画。
解决了:
1. listview加载oom问题
2. listview加载时卡顿的现象
3. listview加载时item中图片重复错位等情况
可以配置:
1. 设置加载图片的最大尺寸
2. 设置默认图片的显示
3. 设置图片位图模式
4. 设置内存缓存的最大值。
5. 文件缓存保存的目录
这个框架基本的代码是很久以前不知道哪里弄的,零零碎碎的,现在已经优化了很多,所以现在上传到github上共享。
讲讲使用方式吧:
首先使用前下载源码或者jar包(见github:https://github.com/wangjiegulu/ImageLoaderSample)
然后进行图片加载器(ImageLoader)的配置和初始化,推荐的方法如下:
新建MyApplication类,继承Application,在onCreate中增加如下代码:
/** * Created with IntelliJ IDEA. * Author: wangjie email:tiantian.china.2@gmail.com * Date: 14-2-27 * Time: 上午11:25 */ public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); ImageLoader.init(getApplicationContext(), new CacheConfig() .setDefRequiredSize(600) // 设置默认的加载图片尺寸(表示宽高任一不超过该值,默认是70px) .setDefaultResId(R.drawable.ic_launcher) // 设置显示的默认图片(默认是0,即空白图片) .setBitmapConfig(Bitmap.Config.ARGB_8888) // 设置图片位图模式(默认是Bitmap.CacheConfig.ARGB_8888) .setMemoryCachelimit(Runtime.getRuntime().maxMemory() / 3) // 设置图片内存缓存大小(默认是Runtime.getRuntime().maxMemory() / 4) // .setFileCachePath(Environment.getExternalStorageDirectory().toString() + "/mycache") // 设置文件缓存保存目录 ); } …… }
然后再AndroidManifest.xml中添加:
......
到此,配置已经全部完成:
接下来,使用ImageLoader来加载图片:
holder.progress.setText("0%"); holder.progress.setVisibility(View.VISIBLE); final ViewHolder vhr = holder; ImageLoader.getInstances().displayImage(list.get(position), holder.image, new ImageLoader.OnImageLoaderListener() { @Override public void onProgressImageLoader(ImageView imageView, int currentSize, int totalSize) { vhr.progress.setText(currentSize * 100 / totalSize + "%"); } @Override public void onFinishedImageLoader(ImageView imageView, Bitmap bitmap) { vhr.progress.setVisibility(View.GONE); } }); 或者: ImageLoader.getInstances().displayImage(url, imageIv); 或者 ImageLoader.getInstances().displayImage(url, imageIv, 100);
备注:
例子中,用到了一部分注解(与ImageLoader功能无关,但是可以简化代码的编写) 可以点下面连接进入:
github:https://github.com/wangjiegulu/androidInject
博客:
http://www.cnblogs.com/tiantianbyconan/p/3459139.html
http://www.cnblogs.com/tiantianbyconan/p/3540427.html
本文向大家介绍Android实现异步加载图片,包括了Android实现异步加载图片的使用技巧和注意事项,需要的朋友参考一下 麦洛开通博客以来,有一段时间没有更新博文了.主要是麦洛这段时间因项目开发实在太忙了.今天周六还在公司加班,苦逼程序猿都是这样生活的. 今天在做项目的时候,有一个实现异步加载图片的功能,虽然比较简单但还是记录一下吧.因为麦洛之前实现异步加载图片都是使用了AsynTask这个AP
问题内容: 我想使用jQuery在页面上异步加载外部图像, 并且尝试了以下方法: 但是它总是返回错误,是否有可能像这样加载图像? 我尝试使用method,但是它有效,但是我不知道如果图像不可用,如何设置超时时间(404)。我怎样才能做到这一点? 问题答案: 无需ajax。您可以创建一个新的图像元素,设置其source属性,并在完成加载后将其放置在文档中的某个位置:
问题内容: 我想给旋转的gif图像供用户使用jquery进行ajax调用时知道发生了什么。我必须使用async:false,因为否则代码会造成混乱,并且最终会导致会话变量变坏。这是我所拥有的(直到呼叫冻结屏幕后才显示gif。) 在这种情况下,我只希望foo = bar时异步。谁能让我知道为什么在调用之后加载spinner.gif。我认为这可能是因为微调器不在其他任何地方,并且加载时有所延迟,但是当
本文向大家介绍PhotoSwipe异步动态加载图片方法,包括了PhotoSwipe异步动态加载图片方法的使用技巧和注意事项,需要的朋友参考一下 在开发搜房家居M站的时候,搜房家居装修效果图相册展示效果需要用到PhotoSwipe插件来显示图片。 特点: 1. 家居提供的接口,每次只能获取一张图片 2. 装修效果图的张数不限。 3. 从PhotoSwipe用法来看,在PhotoSwipe初始化前必须
问题内容: 我有一个用代码创建的(没有): 在另一堂课中,我有一个扩展方法来下载图像异步: 我在其他地方使用了此功能并正常工作,根据我的日志,我了解到下载的图像没有问题(渲染单元时),下载图像后,单元UI未更新。 我也尝试使用像Haneke这样的缓存库,但是问题存在并且没有改变。 请帮助我理解错误 谢谢 问题答案: 设置图像后,您应该致电 编辑:从改正为
问题内容: 我正在使用JQuery的几个插件,自定义窗口小部件和其他一些库。结果,我有几个.js和.css文件。我需要为网站创建一个加载器,因为加载需要一些时间。如果可以在导入所有内容之前显示加载程序,那就太好了: 我找到了一些教程,这些教程使我能够异步导入JavaScript库。例如,我可以做类似的事情: 由于某种原因,当我对所有文件执行相同操作时,页面将无法正常工作。我已经尝试了很长时间,试图
本文向大家介绍Android实现图片缓存与异步加载,包括了Android实现图片缓存与异步加载的使用技巧和注意事项,需要的朋友参考一下 ImageManager2这个类具有异步从网络下载图片,从sd读取本地图片,内存缓存,硬盘缓存,图片使用动画渐现等功能,已经将其应用在包含大量图片的应用中一年多,没有出现oom。 Android程序常常会内存溢出,网上也有很多解决方案,如软引用,手动调用recyc
本文向大家介绍Android ListView异步加载图片方法详解,包括了Android ListView异步加载图片方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android ListView异步加载图片方法。分享给大家供大家参考,具体如下: 先说说这篇文章的优点把,开启线程异步加载图片,然后刷新UI显示图片,而且通过弱引用缓存网络加载的图片,节省了再次连接网络的开销。 这样