Universal-Image-Loader 加载网络图片 内存图片 SD卡图片.

使用Universal-Image-Loader加载图片

此第三方加载图片的优势:

  1. 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
  2. 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
  3. 支持图片的内存缓存,文件系统缓存或者SD卡缓存
  4. 支持图片下载过程的监听
  5. 根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
  6. 较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
  7. 提供在较慢的网络下对图片进行加载
正文:

1.需要配置相应的jar包(jar包百度一搜就有).

2.在Application文件里复制以下代码:

//创建默认的ImageLoader配置参数   加载图片的库.
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);
ImageLoader.getInstance().init(configuration);
3.添加权限:

  1.     <uses-permission android:name="android.permission.INTERNET" />  
  2.       
  3.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
4.配置options

DisplayImageOptions options = new DisplayImageOptions.Builder()
        .cacheInMemory(true)//是否缓存在内存中.
        .cacheOnDisk(true)//是否保存在SD卡中.
        .resetViewBeforeLoading(true)//接下来三行代码最好有,不然用在listview会有复用问题.
        .displayer(new SimpleBitmapDisplayer())
        .handler(new Handler())
        .build();
5.加载图片代码.

ImageLoader.getInstance().displayImage(list.get(position - 1), datas.get(position - 1),
        options, new ImageLoadingListener() {//第一个参数为图片地址,第二个为控件ID.
            @Override
            public void onLoadingStarted(String s, View view) {

            }

            @Override
            public void onLoadingFailed(String s, View view, FailReason failReason) {

            }

            @Override
            public void onLoadingComplete(String s, View view, Bitmap bitmap) {
                datas.get(position - 1).setImageBitmap(bitmap);//在此设置相应逻辑
                progressBar.setVisibility(View.GONE);//关闭加载进度条.
            }

            @Override
            public void onLoadingCancelled(String s, View view) {

            }
        },
        new ImageLoadingProgressListener() {
            @Override
            public void onProgressUpdate(String s, View view, int i, int i1) {
                progressBar.setVisibility(View.VISIBLE);//开启加载进度条.
            }
        });
6.参考文章地址(此文更详细)

http://blog.csdn.net/xiaanming/article/details/26810303/

7.在listview中出现复用问题参考文章(主要是68楼的哥们的意见)

http://www.eoeandroid.com/thread-541113-5-1.html

你可能感兴趣的:(Android,开发工具类文章)