网络图片加载Image-Universal-Loader

来源:互联网 发布:软件测试方案模板 编辑:程序博客网 时间:2024/06/06 16:37

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();    }
阅读全文
0 0