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.     <!-- Include next permission if you want to allow UIL to cache images on SD card -->  
  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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值