最近跟同学们做了一个创业项目,其实跟以前做项目不同,以前大多数都是做web网站,对内存管理这些不太关注,因为是pc机,做android的话也就是一些小列子,现在到了做产品阶段吧,只能把项目做到最优。不扯了,先来说这个框架是做什么的,Android-Universal-Image-Loader主要是一个图片的缓存框架,根据官方解释就是,它提供了一个异步处理图片的方案。它提供两种获取图片方式async or sync,并且提供了一个可定制化的组件(thread executors, downloader, decoder, memory and disk cache, display image options, etc),它会把图片首先缓存到本地,然后在从本地进行读取这些图片,
这是官方使用的效果图
先来说说怎么使用它:首先在github上面下载Android-Universal-Image-Loader,加入到你的android项目里面,然后记得一定要加上这两个权限,否则这个缓存框架是不能够使用的
<manifest> <uses-permission android:name="android.permission.INTERNET" /> <!-- Include next permission if you want to allow UIL to cache images on SD card --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ... <application android:name="MyApplication"> ... </application> </manifest>然后在代码里对该缓存框架进行配置,之所以说它是一个很灵活的东西,是因为它里面的大多数参数都可以手动配置,组件通用化程度高,几乎不需要进行复写。
这是我大概根据官方文档翻译的一些配置,其实对于大家来说,用默认的即可,除非是有特殊要求。
先开始使用的第一步:
配置ImageLoaderConfiguration这个类实现全局ImageLoader
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( activity) .memoryCacheExtraOptions(640, 480) // 保存每个缓存图片的最大长和宽 .threadPoolSize(3) // 线程池的大小 这个其实默认就是3 .memoryCacheSize(2 * 1024) // 设置缓存的最大字节 .denyCacheImageMultipleSizesInMemory() // 缓存显示不同大小的同一张图片 .imageDownloader( new BaseImageDownloader(activity, 5 * 1000, 30 * 1000)) // connectTimeout // s)超时时间 .build(); ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.init(config);
第二步
配置一些图片选项
DisplayImageOptions options; options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_launcher) // 设置图片在下载期间显示的图片 .showImageForEmptyUri(R.drawable.ic_launcher)// 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.drawable.ic_launcher) // 设置图片加载/解码过程中错误时候显示的图片 .cacheInMemory(true)// 设置下载的图片是否缓存在内存中 .cacheOnDisk(true)// 设置下载的图片是否缓存在SD卡中 .displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间 .build();