网络图片加载Image-Universal-Loader

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();
    }

猜你喜欢

转载自blog.csdn.net/user_app/article/details/78852386
今日推荐