ImageLoader简介和使用方法
缓存sd卡要加入权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
1.功能概要
(1).使用多线程加载图片
(2).灵活配置ImageLoader的基本参数,包括线程数、缓存方式、图片显示选项等;
(3).图片异步加载缓存机制,包括内存缓存及SDCard缓存;
(4).采用监听器监听图片加载过程及相应事件的处理;
(5).配置加载的图片显示选项,比如图片的圆角处理及渐变动画。
2.简单实现
在使用ImageLoader的实例之前,你需要初始化该配置,否则会报初始化错误。一般我们直接写在application中初始化。
public class MyApplication extends Application {
@Override
public void onCreate() {
ImageLoaderConfiguration loaderConfiguration = new ImageLoaderConfiguration.Builder(this).build();
// 获得实例
ImageLoader imageLoader = ImageLoader.getInstance();
// 初始化
imageLoader.init(loaderConfiguration);
}
}
在初始化配置完成后,在清单中写入你自定义的application,并写入访问权限。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.xlistview">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!-- 添加写外部存储权限,如果需要往sd卡上写图片的话 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".Application.MyApplication"
/**代码中的使用
* 第一个参数,是图片的url
* 第二个参数是imageView控件
*/
ImageLoader.getInstance().displayImage(data_list.get(position).getPic_url(), holder.img);
常用参数
sd卡路径:
String path = Environment.getExternalStorageDirectory().getPath() + "/Images";
File file = new File(path);
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.threadPoolSize(3) //设置开启线程池数
.memoryCacheSize(10*1024) //设置内存的缓存大小
.memoryCacheExtraOptions(480, 800) //内存缓存图片的最大宽高
.diskCacheSize(50 * 1024 * 1024)// 缓冲大小
.diskCache(new UnlimitedDiskCache(file))//缓存到sd卡中
.build(); //构建完成
//得到ImageLoader对像
ImageLoader imageLoader = ImageLoader.getInstance();
//进行初使化
imageLoader.init(configuration);
适配器页面 Display Options属性
DisplayImageOptions options = new DisplayImageOptions.Builder()
// 正在加载时显示的占位图
.showImageOnLoading(R.drawable.ic_stub)
// URL为空时显示的占位图
.showImageForEmptyUri(R.drawable.ic_empty)
// 加载失败时显示的占位图
.showImageOnFail(R.drawable.ic_error)
// 在加载前是否重置 view,默认为false
.resetViewBeforeLoading(false)
//设置在开始加载前的延迟时间,单位为毫秒,通过 Builder 构建的对象默认为 0
.delayBeforeLoading(1000)
// 是否缓存在内存中,通过 Builder 构建的对象默认为 false
.cacheInMemory(false)
// 是否缓存在磁盘中,通过 Builder 构建的对象默认为 false。//设置下载的图片是否缓存在内存中
.cacheOnDisk(false)
//缓存在内存之前的处理程序,默认为 null//设置下载的图片是否缓存在SD卡中
.preProcessor(null)
//缓存在内存之后的处理程序,默认为 null。//设置下载的图片是否缓存在SD卡中
.postProcessor(null)
//下载器需要的辅助信息。下载时传入ImageDownloader.getStream(String, Object)的对象,方便用户自己扩展,默认为 null。
.extraForDownloader(null)
// 是否考虑图片的 EXIF 信息,通过 Builder 构建的对象默认为 false。
.considerExifParams(false)
// 图片的缩放类型,通过 Builder 构建的对象默认为IN_SAMPLE_POWER_OF_2
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
// bitmap的质量,默认为ARGB_8888
.bitmapConfig(Bitmap.Config.ARGB_8888)
//为 BitmapFactory.Options,用于BitmapFactory.decodeStream(imageStream, null, decodingOptions)得到图片尺寸等信息。
.decodingOptions(null)
// 在ImageAware中显示 bitmap 对象的接口。可在实现中对 bitmap 做一些额外处理,比如加圆角、动画效果。
.displayer(new SimpleBitmapDisplayer())
// handler 对象,默认为 null
.handler(new Handler())
.build();
//清除缓存按钮
public void clearCache(View view){
//清除缓存的方法
ImageLoader.getInstance().clearDiskCache();//清除磁盘缓存
ImageLoader.getInstance().clearMemoryCache();//清除内存缓存
Toast.makeText(this, "清除缓存成功", Toast.LENGTH_SHORT).show();
}