Android开源框架Universal-Image-Loader

  1. 多线程下载图片,图片能够来源于网络,文件系统,项目文件夹assets中以及drawable中等java

  2. 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其余的一些配置android

  3. 支持图片的内存缓存,文件系统缓存或者SD卡缓存git

  4. 支持图片下载过程的监听github

  5. 根据控件(ImageView)的大小对Bitmap进行裁剪,减小Bitmap占用过多的内存缓存

  6. 较好的控制图片的加载过程,例如暂停图片加载,从新开始加载图片,通常使用在ListView,GridView中,滑动过程当中暂停加载图片,中止滑动的时候去加载图片网络

  7. 提供在较慢的网络下对图片进行加载多线程

1.自定义XXXAppllication类,初始化ImageLoader

public class XXXApplication extends Application {  @Override  public void onCreate() {    super.onCreate();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())          .denyCacheImageMultipleSizesInMemory()          .memoryCache(new LruMemoryCache(2 * 1024 * 1024))          .memoryCacheSize(2 * 1024 * 1024)          .discCacheSize(50 * 1024 * 1024)          .denyCacheImageMultipleSizesInMemory()  
  .discCacheFileNameGenerator(new Md5FileNameGenerator())  
  .tasksProcessingOrder(QueueProcessingType.LIFO)  
          .discCacheFileCount(100)          .writeDebugLogs()  .build();
        ImageLoader.getInstance().init(config);  }
}

2.在AndroidManifest.xml文件的application标签里加入

android:name=".XXXApplication"

3.使用imageloader

public class ImageManager{   public static void Load(String imgUrl,ImageView imageView){    ImageLoader.getInstance().displayImage(imgUrl, imageView);   }   public static void Load(String imgUrl,ImageView imageView,DisplayImageOptions o){     ImageLoader.getInstance().displayImage(imgUrl, imageView,o);   }
}

4.部分参数介绍(  DisplayImageOptions ) 

//设置图片在下载期间显示的图片  showStubImage(R.drawable.ic_launcher) 
  //设置图片Uri为空或是错误的时候显示的图片  showImageForEmptyUri(R.drawable.ic_empty) 
  //设置图片加载/解码过程当中错误时候显示的图片  showImageOnFail(R.drawable.ic_error) 
  //设置图片在下载前是否重置,复位  resetViewBeforeLoading() 
  //设置下载的图片是否缓存在内存中  cacheInMemory() 
  //设置下载的图片是否缓存在SD卡中  cacheOnDisc() 
  //设置图片的解码类型  bitmapConfig(Bitmap.Config.RGB_565) 
  //设置图片的解码配置  decodingOptions(android.graphics.BitmapFactory.Options decodingOptions) 
  //设置图片下载前的延迟  delayBeforeLoading(int delayInMillis) 
  //设置额外的内容给ImageDownloader  extraForDownloader(Object extra) 
  //设置图片加入缓存前,对bitmap进行设置  preProcessor(BitmapProcessor preProcessor) 
  //设置显示前的图片,显示后这个图片一直保留在缓存中  postProcessor(BitmapProcessor postProcessor) 
  //设置图片以如何的编码方式显示  imageScaleType(ImageScaleType imageScaleType)/**
 * 设置图片的显示方式
 * @param displayer
 */displayer(BitmapDisplayer displayer)
displayer:    RoundedBitmapDisplayer(int roundPixels)设置圆角图片    FakeBitmapDisplayer()这个类什么都没作    FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间
     SimpleBitmapDisplayer()正常显示一张图片  /**
 * 图片的缩放方式
 * @param imageScaleType
 */
    imageScaleType(ImageScaleType imageScaleType)
    imageScaleType:          EXACTLY :图像将彻底按比例缩小的目标大小          EXACTLY_STRETCHED:图片会缩放到目标大小彻底          IN_SAMPLE_INT:图像将被二次采样的整数倍          IN_SAMPLE_POWER_OF_2:图片将下降2倍,直到下一减小步骤,使图像更小的目标大小          NONE:图片不会调整/**
*DisplayImageOptions简单示例
*/// 建立默认的DisplayImageOptionsDisplayImageOptions option_0=DisplayImageOptions.createSimple();// 使用DisplayImageOptions.Builder()建立DisplayImageOptionsDisplayImageOptions options = new DisplayImageOptions.Builder()  
  .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)  .showStubImage(R.drawable.loading)  
  .showImageForEmptyUri(R.drawable.load_fail)  
  .showImageOnFail(R.drawable.load_fail)  
  .cacheInMemory(true)  
  .cacheOnDisc(true)    
  .build();

5.最后别忘了权限

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

源码下载

相关文章
相关标签/搜索