效果图就是一个从网络加载的图片;在加载的时候图片的中间显示一个进度条

数据是随便找的一个网络图片的地址

导入jar包universal-image-loader-1.9.5 用来展示商品使用    在使用 ImageLoader应加入

ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(this));不然会报

java.lang.IllegalStateException: ImageLoader must be init with configuration before using字面意思是在使用前要初始化

如下是代码

  1. package com.itm.jiejie.activity;
  2.  
  3. import com.itm.jiejie.R;
  4. import com.nostra13.universalimageloader.core.DisplayImageOptions;
  5. import com.nostra13.universalimageloader.core.ImageLoader;
  6. import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
  7. import com.nostra13.universalimageloader.core.assist.FailReason;
  8. import com.nostra13.universalimageloader.core.assist.ImageScaleType;
  9. import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
  10. import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
  11. import android.app.Activity;
  12. import android.graphics.Bitmap;
  13. import android.os.Bundle;
  14. import android.view.View;
  15. import android.widget.ImageView;
  16. import android.widget.ProgressBar;
  17.  
  18. /**
  19. * ImageLoder的使用
  20. *
  21. * @author Administrator
  22. *
  23. */
  24. public class ImageLoaderActivity extends Activity {
  25. private ImageView img_loadView;
  26. private ProgressBar progressBar;
  27. /** 图片的网络地址 */
  28. private String urlString = "http://image.tianjimedia.com/uploadImages/2012/067/N80N0GUA36N0.jpg";
  29.  
  30. private ImageLoader imageLoader = ImageLoader.getInstance();
  31. private DisplayImageOptions options;
  32. @Override
  33. protected void onCreate(Bundle savedInstanceState) {
  34. // TODO Auto-generated method stub
  35. super.onCreate(savedInstanceState);
  36. setContentView(R.layout.activity_imageload);
  37. img_loadView = (ImageView) findViewById(R.id.img_load);
  38. progressBar = (ProgressBar)findViewById(R.id.pb_loading);
  39. /**
  40. * 下面这2个应该用个工具类封装下,方便调用
  41. */
  42. imageLoader.init(ImageLoaderConfiguration.createDefault(this));
  43. options = new DisplayImageOptions.Builder()
  44. .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片URL为空或是错误的时候显示图片
  45. .showImageOnFail(R.drawable.ic_error)//image加载失败或解码过程错误显示的图片
  46. .resetViewBeforeLoading(true)//设置下载的图片下载前是否重置,复位
  47. .cacheInMemory(true)//设置下载图片是否缓存到内存
  48. .imageScaleType(ImageScaleType.EXACTLY)
  49. .bitmapConfig(Bitmap.Config.RGB_565)//设置图片解码类型
  50. .displayer(new FadeInBitmapDisplayer(300))//设置用户加载图片的task(这里是渐现)
  51. .build();
  52.  
  53. //imageLoader.displayImage(urlString, img_loadView,options);
  54. imageLoader.displayImage(urlString, img_loadView,options,new MySimpleLoading(progressBar));
  55. }
  56.  
  57. /**
  58. * ImageLoder 开始加载的监听
  59. * @author Administrator
  60. *
  61. */
  62. private class MySimpleLoading extends SimpleImageLoadingListener{
  63. private ProgressBar mBar;
  64.  
  65. public MySimpleLoading(ProgressBar mBar) {
  66. super();
  67. this.mBar = mBar;
  68. }
  69. //开始加载
  70. @Override
  71. public void onLoadingStarted(String imageUri, View view) {
  72. // TODO Auto-generated method stub
  73. super.onLoadingStarted(imageUri, view);
  74. mBar.setVisibility(View.VISIBLE);
  75. }
  76. @Override
  77. public void onLoadingFailed(String imageUri, View view,
  78. FailReason failReason) {
  79. // TODO Auto-generated method stub
  80. String message = null;
  81. switch (failReason.getType()) {
  82. case IO_ERROR:
  83. message = "Input/Output error";
  84. break;
  85. case DECODING_ERROR:
  86. message = "Image can't be decoded";
  87. break;
  88. case NETWORK_DENIED:
  89. message = "Downloads are denied";
  90. break;
  91. case OUT_OF_MEMORY:
  92. message = "Out Of Memory error";
  93. break;
  94. case UNKNOWN:
  95. message = "Unknown error";
  96. break;
  97. }
  98. System.out.println(message);
  99. mBar.setVisibility(View.GONE);
  100. }
  101. @Override
  102. public void onLoadingComplete(String imageUri, View view,
  103. Bitmap loadedImage) {
  104. // TODO Auto-generated method stub
  105. super.onLoadingComplete(imageUri, view, loadedImage);
  106. mBar.setVisibility(View.GONE);
  107. System.out.println(imageUri);
  108. }
  109. }
  110. /**
  111. * 清除内存缓存
  112. */
  113. public void clearMemoryCache() {
  114. imageLoader.clearMemoryCache();
  115. }
  116. }

如下是一个封装好的ImageLoader的工具类,在项目中可以直接调用

  1. package com.xiaolijuan.swiperefreshlayoutdome.utils;
  2.  
  3. import android.content.Context;
  4. import android.graphics.Bitmap;
  5. import android.graphics.BitmapFactory;
  6. import android.widget.ImageView;
  7. import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
  8. import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache;
  9. import com.nostra13.universalimageloader.core.DisplayImageOptions;
  10. import com.nostra13.universalimageloader.core.ImageLoader;
  11. import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
  12. import com.nostra13.universalimageloader.core.assist.ImageScaleType;
  13. import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
  14. import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
  15. import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
  16. import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
  17.  
  18. /**
  19. * 初始化UniverImageLoader,并用来加载网络图片
  20. * Created by jiejie.
  21. */
  22.  
  23. public class ImageLoaderUtil {
  24. private static final int THREAD_COUNT = 2;
  25. private static final int PRIORITY = 2;
  26. private static final int DISK_CACHE_SIZE = 50 * 1024 * 1024;
  27. private static final int CONNECTION_TIME_OUT = 5 * 1000;
  28. private static final int READ_TIME_OUT = 30 * 1000;
  29.  
  30. private static ImageLoaderUtil mInstance = null;
  31. private static ImageLoader mLoader = null;
  32.  
  33. public static ImageLoaderUtil getInstance(Context context){
  34. if(mInstance == null){
  35. synchronized (ImageLoaderUtil.class){
  36. if(mInstance == null){
  37. mInstance = new ImageLoaderUtil(context);
  38. }
  39. }
  40. }
  41. return mInstance;
  42. }
  43.  
  44. /**
  45. * 私有构造方法完成初始化工作
  46. * @param context
  47. */
  48. private ImageLoaderUtil(Context context){
  49. ImageLoaderConfiguration config = new ImageLoaderConfiguration
  50. .Builder(context)
  51. .threadPoolSize(THREAD_COUNT)
  52. .threadPriority(Thread.NORM_PRIORITY - PRIORITY)
  53. .denyCacheImageMultipleSizesInMemory()
  54. .memoryCache(new WeakMemoryCache())
  55. .diskCacheSize(DISK_CACHE_SIZE)
  56. .diskCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候URL加密
  57. .tasksProcessingOrder(QueueProcessingType.LIFO)
  58. .defaultDisplayImageOptions(getDefaultOptions())
  59. .imageDownloader(new BaseImageDownloader(context,CONNECTION_TIME_OUT,READ_TIME_OUT))
  60. .build();
  61. ImageLoader.getInstance().init(config);
  62. mLoader = ImageLoader.getInstance();
  63. }
  64.  
  65. /**
  66. * 默认的图片显示Options,可设置图片的缓存策略,编解码方式等,非常重要
  67. *
  68. * @return
  69. */
  70. private DisplayImageOptions getDefaultOptions() {
  71. DisplayImageOptions options = new DisplayImageOptions.Builder()
  72. .cacheInMemory(true)//设置下载的图片是否缓存在内存中, 重要,否则图片不会缓存到内存中
  73. .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中, 重要,否则图片不会缓存到硬盘中
  74. .considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转)
  75. .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示
  76. .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型//
  77. .decodingOptions(new BitmapFactory.Options())//设置图片的解码配置
  78. .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
  79. .displayer(new FadeInBitmapDisplayer(300))//设置加载图片的task(这里是渐现)
  80. .build();
  81. return options;
  82. }
  83.  
  84. /**
  85. * Load the image
  86. * @param imageView
  87. * @param path
  88. * @param listener
  89. * @param option
  90. */
  91. public void displayImage(ImageView imageView, String path, ImageLoadingListener listener,DisplayImageOptions option){
  92. if(mLoader != null){
  93. mLoader.displayImage(path,imageView,listener);
  94. }
  95. }
  96. //load the image
  97. public void displayImage(ImageView imageView, String path, ImageLoadingListener listener) {
  98. if (mLoader != null) {
  99. mLoader.displayImage(path, imageView, listener);
  100. }
  101. }
  102.  
  103. public void displayImage(ImageView imageView, String path) {
  104. displayImage(imageView, path, null);
  105. }
  106. }
  1.  

ImageLoader简单使用的更多相关文章

  1. 【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50824912 相关地址介绍 : -- Universal I ...

  2. Android-----第三方 ImageLoader 的简单配置和使用

    ImageLoader 的简单使用配置,最好是将配置信息放到application里面,这样我们就不需要每次使用都需要配置了 1.首先我们得有一个包 2.简单的配置信息 //显示图片的配置 Displ ...

  3. Android ImageLoader(Android-Universal-Image-Loader)【1】概述及使用简单介绍

     Android ImageLoader(Android-Universal-Image-Loader)[1]概述及使用简单介绍 一,前言:为什么要引入Android-Universal-Imag ...

  4. ImageLoader的简单分析(二)

    在<ImageLoader的简单分析>这篇博客中对IImageLoader三大组件的创建过程以及三者之间的关系做了说明.同一时候文章的最后也简单的说明了一下ImageLoader是怎么通过 ...

  5. android使用ImageLoader实现图片缓存(安卓开发必备)

    相信大家在学习以及实际开发中基本都会与网络数据打交道,而这其中一个非常影响用户体验的就是图片的缓存了,若是没有弄好图片缓存,用户体验会大大下降,总会出现卡顿情况,而这个问题尤其容易出现在ListVie ...

  6. android ImageLoader 混淆加载drawable出现黑色图片的解决方案

    在网上找了很久,没有找到.后来看了源码才知道... 多线程异步加载和显示图片(图片来源于网络.sd卡.assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图) Stri ...

  7. 让你Android开发更简单

    转载:http://www.jianshu.com/p/22ff8b5fdadc 搭建一个新的Android项目,你会怎么做? 每个人对应用框架的理解不相同,但是最终达到的效果应该是一样: ①降低项目 ...

  8. ImageLoader图片加载

    http://blog.csdn.net/liu1164316159/article/details/38728259       转载请注明http://write.blog.csdn.net/po ...

  9. Android 三大图片加载框架的对比——ImageLoader,Picasso,Glide

    一.ImageLaoder介绍 << Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹ass ...

随机推荐

  1. python学习之路---day03

    一:数据类型转换 1:bool-->int 将bool转成 int型 True 是1 False是0 a=True c=int(a) print(c) b=False d=int(b) prin ...

  2. c3m快速入门

  3. 洛谷 P3177 [HAOI2015]树上染色

    题目链接 题目描述 有一棵点数为 \(N\) 的树,树边有边权.给你一个在 \(0~ N\) 之内的正整数 \(K\) ,你要在这棵树中选择 \(K\)个点,将其染成黑色,并将其他 的\(N-K\)个 ...

  4. Tarjan算法打包总结(求强连通分量、割点和Tarjan-LCA)

    目录 Tarjan打包总结(求强连通分量.割点和Tarjan-LCA) 强连通分量&缩点 原理 伪代码 板子(C++) 割点 原理 伪代码 最近公共祖先(LCA) 原理 伪代码 板子 Tarj ...

  5. 119th LeetCode Weekly Contest Subarray Sums Divisible by K

    Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have a sum ...

  6. ActionHelper

    /// <summary> /// 方法帮助类 /// </summary> public class ActionHelper { /// <summary> / ...

  7. python 函数的递归

    递归:简单来说就是自己调用自己 这里我们又要举个例子来说明递归能做的事情. 例一: 现在你们问我,alex老师多大了?我说我不告诉你,但alex比 egon 大两岁. 你想知道alex多大,你是不是还 ...

  8. Notepad++ 代码格式化插件

    UniversalIndentGUI 是一个代码格式化工具合集,基于很多开源的代码格式化项目.有NPP的插件版也有独立的程序,支持常见代码格式. 支持的代码格式: C, C++, C#, Cobol, ...

  9. 理解Call、Apply、bind

    Apply.call 共同点: 为了改变函数执行时的上下文(简单说就是为了改变当前函数体内的This的指向) 不同点: 传入的参数不一样,func.apply(this,[arg1,arg2]).fu ...

  10. PIE SDK图片元素的绘制

    1. 功能简介 在数据的处理中会用到图片元素的绘制,利用IPictureElement图片元素接口进行绘制,目前PIE SDK支持IPictureElement元素接口的绘制,下面对图片元素的绘制进行 ...