Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。

(1).使用多线程加载图片
(2).灵活配置ImageLoader的基本参数,包括线程数、缓存方式、图片显示选项等;
(3).图片异步加载缓存机制,包括内存缓存及SDCard缓存;
(4).采用监听器监听图片加载过程及相应事件的处理;
(5).配置加载的图片显示选项,比如图片的圆角处理及渐变动画。

//第一种方法是去网上下载

地址:https://github.com/nostra13/Android-Universal-Image-Loader

//第二种就是可以依赖

compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'

   配置文件要设置网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
先建一个App类 继承Application  (其中两种加载)
建好后必须要在配置文件内初始化(注册.App)

public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
      
//第一种是创建默认的加载 //创建默认的ImageLoaderConfiguration
ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(this);
//初始化ImageLoader
ImageLoader.getInstance().init(configuration); //第二种是自定义加载
//自定义加载第三方图片样式
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.image_nor) // 设置图片下载期间显示的图片
.showImageForEmptyUri(R.drawable.image_nor) // 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.image_nor) // 设置图片加载或解码过程中发生错误显示的图片
.resetViewBeforeLoading(true) // default 设置图片在加载前是否重置、复位
.delayBeforeLoading(200) // 下载前的延迟时间
.cacheInMemory(true) // default 设置下载的图片是否缓存在内存中
.cacheOnDisk(true) // default 设置下载的图片是否缓存在SD卡中
.considerExifParams(false) // default
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型
// .displayer(new SimpleBitmapDisplayer()) // default 还可以设置圆角图片new RoundedBitmapDisplayer(20)
.displayer(new FadeInBitmapDisplayer(200))// 图片加载好后渐入的动画时间
// .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
.handler(new Handler()) // default
.build(); //设置图片缓存路径
File cacheDir = StorageUtils.getCacheDirectory(this);
//自定义ImageLoaderConfiguration配置
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大宽、高
// .diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大宽、高),最好不要设置这个
.threadPoolSize(4) // default 线程池内加载的数量
// .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
.tasksProcessingOrder(QueueProcessingType.FIFO) // default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
.memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值
.memoryCacheSizePercentage(13) // default
//可以自定义缓存路径
.diskCache(new UnlimitedDiskCache(cacheDir))
.diskCacheSize(100 * 1024 * 1024) // 100 Mb sd卡(本地)缓存的最大值
// .diskCacheFileCount(100) // 可以缓存的文件数量
// default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
// .connectTimeout (5 s), readTimeout (30 s) //超时时间
//第二个参数:连接超时时间,第三个参数:读取超时时间
.imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000))
.defaultDisplayImageOptions(options)
.writeDebugLogs() // 打印debug log
.build(); //开始构建 //初始化ImageLoader
ImageLoader.getInstance().init(configuration); }
 在activity应用 

 public class MainActivity extends AppCompatActivity {

     private String url;

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //初始化组件
GridView gridView= (GridView) findViewById(R.id.lv);
gridView.setAdapter(new ImageAdapter(this,ImageUrlArrays.IMAGE_URL_ARRAYS)); /* //初始化图片加载框架
final ImageLoader imageLoader = ImageLoader.getInstance();*/ //第一种加载方式 需要个url图片地址
url = "http://www.chinagirlol.cc/data/attachment/forum/201412/03/233758hw7o7h08kkozkcwi.jpg";
imageLoader.displayImage(ImageUrlArrays.IMAGE_URL_ARRAYS[8],imageView); /* //第二种加载方式
imageLoader.displayImage(url, imageView, new ImageLoadingListener() {
@Override //刚开始加载的图片
public void onLoadingStarted(String s, View view) {
imageView.setImageResource(R.drawable.image_nor);
} @Override //加载失败图片
public void onLoadingFailed(String s, View view, FailReason failReason) { } @Override//加载完成的图片
public void onLoadingComplete(String s, View view, Bitmap bitmap) {
imageView.setImageBitmap(bitmap);
} @Override//取消加载
public void onLoadingCancelled(String s, View view) { }
});*/ /* //第三种加载方式 设固定宽高
ImageSize imageSize=new ImageSize(140,160);
imageLoader.loadImage(ImageUrlArrays.IMAGE_URL_ARRAYS[10],imageSize,new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
imageView.setImageBitmap(loadedImage);
}
});
*/
}
}

以上代码在以后的修改比较麻烦 所以我们可以自己在封装起来,变成自己的再用,方便修改

 public class WXHLImageLoader {

     //懒汉单例
private static WXHLImageLoader wxhlImageLoader;
//获取第三方的ImageLoader
private ImageLoader imageLoader; private WXHLImageLoader(){
imageLoader = ImageLoader.getInstance();
} /**
* 单例
* @return
*/
public static synchronized WXHLImageLoader getInstance(){
// return wxhlImageLoader;
if(wxhlImageLoader == null){
wxhlImageLoader = new WXHLImageLoader();
}
return wxhlImageLoader;
} /**
* 显示图片
* @param imageUrl
* @param imageView
*/
public void displayImage(String imageUrl, ImageView imageView){
imageLoader.displayImage(imageUrl,imageView);
} /**
* 显示图片,带监听器的
* @param imageUrl
* @param imageView
*/
public void displayImage(String imageUrl, ImageView imageView,ImageLoadingListener listener){
imageLoader.displayImage(imageUrl,imageView,listener);
} /**
* 加载图片,带监听器的
* @param imageUrl
* @param listener
*/
public void loadImage(String imageUrl, SimpleImageLoadingListener listener){
imageLoader.loadImage(imageUrl,listener);
} /**
* 加载图片,带监听器的
* @param imageUrl
* @param listener
*/
public void loadImage(String imageUrl, int width, int height, SimpleImageLoadingListener listener){
ImageSize targetSize = new ImageSize(width, height); // result Bitmap will be fit to this size
imageLoader.loadImage(imageUrl,targetSize,listener);
} }
 


第三方的图片加载( Android-Universal-Image-Loader)的更多相关文章

  1. Android 框架修炼-自己开发高效异步图片加载框架

    一.概述 目前为止,第三方的图片加载框架挺多的,比如UIL , Volley Imageloader等等.但是最好能知道实现原理,所以下面就来看看设计并开发一个加载网络.本地的图片框架. 总所周知,图 ...

  2. Android高效异步图片加载框架

    概述 Android高效异步图片加载框架:一个高效的异步加载显示的图片加载框架,同时具备图片压缩,缓存机制等特性. 详细 代码下载:http://www.demodashi.com/demo/1214 ...

  3. Android开发三种第三方图片加载的框架

    最近在项目中用到了大量图片加载,第三方优秀框架还不错,下面介绍三款榜首的框架用法和问题,做一个记录. 现在项目使用的是Android Studio开发的,现在也没有多少人使用Eclipse了吧. 一. ...

  4. Android开源库--Universal Image Loader通用图片加载器

    如果说我比别人看得更远些,那是因为我站在了巨人的肩上.   github地址:https://github.com/nostra13/Android-Universal-Image-Loader 介绍 ...

  5. Android中常见的图片加载框架

    图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行 ...

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

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

  7. Android图片加载库的理解

    前言     这是“基础自测”系列的第三篇文章,以Android开发需要熟悉的20个技术点为切入点,本篇重点讲讲Android中的ImageLoader这个库的一些理解,在Android上最让人头疼是 ...

  8. Android图片加载与缓存开源框架:Android Glide

    <Android图片加载与缓存开源框架:Android Glide> Android Glide是一个开源的图片加载和缓存处理的第三方框架.和Android的Picasso库类似,个人感觉 ...

  9. 一起写一个Android图片加载框架

    本文会从内部原理到具体实现来详细介绍如何开发一个简洁而实用的Android图片加载缓存框架,并在内存占用与加载图片所需时间这两个方面与主流图片加载框架之一Universal Image Loader做 ...

随机推荐

  1. pycharm licenseserver 注册方法

    pycharm5.0之后,以前的很多注册码都无法使用,可以选择使用license server 方式进行注册,方法如下: 注册方法:    在 注册时选择 License server ,填 http ...

  2. async?

    Here, I want to record one thing, as to async and await methods, I've seen many misuses. Since these ...

  3. Java被忽略的基本知识(四)

    Java IO(不是一般的重要) 54.IO中的流:字节流(InputStream.OutputStream).字符流(Reader.Writer).转换流(InputStreamReader.Out ...

  4. 什么是Cookie对象,Session对象,Application对象。

    Cookie是: 一个由网页服务器放在您硬盘上的非常小的文本文件. 它本质上就像您的身份证明一样,并且不能像代码那样被执行或被用来散布病毒.它只能被您使用并且只能由提供的服务器读取. 使用Cookie ...

  5. XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network

    XiangBai--[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...

  6. linux hadoop安装

    linux hadoop安装 本文介绍如何在Linux下安装伪分布式的hadoop开发环境. 在一开始想利用cgywin在 windows下在哪, 但是一直卡在ssh的安装上.所以最后换位虚拟机+ub ...

  7. 【转】移动前端不得不了解的html5 head 头标签

    来源:http://blog.csdn.net/huang100qi/article/details/42596799 本文主要内容来自一丝的常用的 HTML 头部标签和百度FEX的HTML head ...

  8. 国内外从事CV相关的企业

    提示:本文为笔者原创,转载请注明出处:blog.csdn.net/carson2005 经常碰到朋友问我国内从事计算机视觉(CV)领域的公司的发展情况,产品情况,甚至找工作等问题,这里,我给出自己收集 ...

  9. APICloud开发App总结(一)

    apiCloud app 开发是最近一两年刚刚兴起的一种混合开发方式.常用的模块以原生方式开发好,然后用js进行粘合.组织,完成整个的app的逻辑.这种开发方式极大的提高了软件模块的复用率,加快了ap ...

  10. Samsung S4卡屏卡在开机画面的不拆机恢复照片一例

    大家好!欢迎再次来到我Dr.wonder的世界, 今天我给你们带来Samsung S4 I9508 卡屏开在开机画面的恢复!非常de经典. 首先看图 他开机一直卡在这里, 然后 ,我们使用专业仪器,在 ...