您的位置:首页 > 其它

第三方图片加载库

2016-07-07 17:56 423 查看
一、Picasso

git地址:https://github.com/square/picasso
gradle依赖: compile'com.squareup.picasso:picasso:2.5.2'
使用非常简单:

Picasso.with(this).load("").error(R.mipmap.ic_launcher).
placeholder(R.mipmap.ic_launcher).
resize(50, 50).config(Bitmap.Config.ARGB_8888).
memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).
networkPolicy(NetworkPolicy.NO_CACHE).
centerInside().into(iv);


二、Glide(支持gif)用法跟picasso差不多

git地址:https://github.com/bumptech/glide
studio添加依赖:
repositories {

  mavenCentral() // jcenter() works as well because it pulls from Maven Central

}

dependencies {

  compile 'com.github.bumptech.glide:glide:3.7.0'
  compile 'com.android.support:support-v4:19.1.0'

}

使用:跟Picasso类

Glide.with(this).load("file//....").
placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).//占位图/加载错误
override(50,50).//指定他显示宽高
skipMemoryCache(false).//内存缓存
diskCacheStrategy(DiskCacheStrategy.NONE).//缓存原尺寸和各种尺寸
centerCrop().//显示方式/fitCenter
into(imageView);


(一)GlideTransformation 基于Glide的图片处理,支持各种图片样式

git地址: https://github.com/wasabeef/glide-transformations


使用:





三、UniversalImageLoader
git地址:https://github.com/nostra13/Android-Universal-Image-Loader
不支持compile,需下载copy到工程lib下
详情请看 http://blog.csdn.net/xiaanming/article/details/26810303/
1.在Application初始化
创建默认的ImageLoader配置参数


File cacheDir = getImagePath();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480, 800)
// default = device screen dimensions
.threadPoolSize(3)
// default
.threadPriority(Thread.NORM_PRIORITY - 1)
// default
.tasksProcessingOrder(QueueProcessingType.FIFO)
// default
.denyCacheImageMultipleSizesInMemory().memoryCache(

new LruMemoryCache(20 * 1024 * 1024))
.memoryCacheSize(20 * 1024 * 1024).memoryCacheSizePercentage(13)
// default
.diskCache(new UnlimitedDiskCache(cacheDir))
// 自定义缓存路径
// default
.diskCacheSize(80 * 1024 * 1024).diskCacheFileCount(100)
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
.imageDownloader(new BaseImageDownloader(this)) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs().writeDebugLogs().build();
ImageLoader.getInstance().init(config);// 全局初始化此配置


//得到实例
ImageLoader loader = ImageLoader.getInstance();

2.使用

//根据不同需求,配置他的缓存,默认图片,图片样式等
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.mipmap.ic_launcher) // resource or drawable
.showImageForEmptyUri(R.mipmap.ic_launcher) // resource or drawable
.showImageOnFail(R.mipmap.ic_launcher) // resource or drawable
.resetViewBeforeLoading(false)  // default
.delayBeforeLoading(1000)
.cacheInMemory(false) // default
.cacheOnDisk(false) // default
.considerExifParams(false) // default
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
.bitmapConfig(Bitmap.Config.ARGB_8888) // default使用RGB_565会比使用ARGB_8888少								消耗2倍的内存
.displayer(new SimpleBitmapDisplayer()) // default -- RoundedBitmapDisplayer
.handler(new Handler()) // default
.build();


loader.displayImage(String url,ImageView iv,DiaplayImageOptions options);//支持异步获得图片
loader.loadImage(String url,ImageSize size,DisplayImageOptions options,ImageLoadingImageListener listener);
............................

有着与activity相同的生命周期,还可以取消掉具体的imageview

loader.clearDiskCache();//清除磁盘缓存
loader.clearMemoryCache();//清楚内存缓存
loader.pause();
loader.resume();
loader.stop();
loader.destroy();

loader.cancelDisplayTask(imageView);


四、Fresco
git地址:https://github.com/facebook/fresco
gradle: compile
'com.facebook.fresco:fresco:0.11.0'
中文网址:http://fresco-cn.org/docs/index.html
极客有详解:http://wiki.jikexueyuan.com/project/fresco/configure-image-pipeline.html

使用:
 是基于fresco的控件加载图片的,初始化



//最简单的使用就是:

simpleDraweeView.setImageURI("");


控件基本属性:
<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="20dp"   //
不支持wrap_content 如果要设置宽高比,
需要在Java代码中指定setAspectRatio(1.33f);
    android:layout_height="20dp"    // 不支持wrap_content 
    fresco:fadeDuration="300"
    fresco:actualImageScaleType="focusCrop"
 // 设置图片缩放. 通常使用focusCrop,该属性值会通过算法把人头像放在中间
    fresco:placeholderImage="@color/wait_color"
 // 下载成功之前显示的图片
    fresco:placeholderImageScaleType="fitCenter"
 
    fresco:failureImage="@drawable/error"
// 加载失败的时候显示的图片
    fresco:failureImageScaleType="centerInside"
    fresco:retryImage="@drawable/retrying"
// 加载失败,提示用户点击重新加载的图片(会覆盖failureImage的图片)
    fresco:retryImageScaleType="centerCrop"
    fresco:progressBarImage="@drawable/progress_bar"//
提示用户正在加载,和加载进度无关
    fresco:progressBarImageScaleType="centerInside"
    fresco:progressBarAutoRotateInterval="1000"
    fresco:backgroundImage="@color/blue"
    fresco:overlayImage="@drawable/watermark"
    fresco:pressedStateOverlayImage="@color/red"
    fresco:roundAsCircle="false"
// 是不是设置圆圈
    fresco:roundedCornerRadius="1dp"
// 圆角角度,180的时候会变成圆形图片
    fresco:roundTopLeft="true"
    fresco:roundTopRight="false"
    fresco:roundBottomLeft="false"
    fresco:roundBottomRight="true"
    fresco:roundWithOverlayColor="@color/corner_color"
    fresco:roundingBorderWidth="2dp"
    fresco:roundingBorderColor="@color/border_color"
  />

增加一些设置(尺寸。类型监听。。。)

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse("")).
setImageType(ImageRequest.ImageType.DEFAULT).
disableDiskCache().setAutoRotateEnabled(false).setResizeOptions(

new ResizeOptions(50, 50)).build();

DraweeController controller = Fresco.newDraweeControllerBuilder().setUri("").
setControllerListener(controlListener).setImageRequest(request)
.setAutoPlayAnimations(true).build();

simpleDraweeView.setController(controller);


五、XUtils
git地址:https://github.com/wyouflf/xUtils3
gradle: compile
'org.xutils:xutils:3.3.36'

简单使用:

x.Ext.init(getApplication());//初始化放在application

ImageOptions options = new ImageOptions.Builder().setConfig(Bitmap.Config.RGB_565).
setFadeIn(true).setIgnoreGif(false).setCrop(true).
setLoadingDrawableId(0).setFailureDrawableId(0).setForceLoadingDrawable(true).
setImageScaleType(ImageView.ScaleType.CENTER_CROP).setPlaceholderScaleType(

ImageView.ScaleType.CENTER_CROP).
setSize(50, 50).setRadius(5).setUseMemCache(true).setSquare(true).build();
x.image().bind(imageView, "http://...", options);


可以设置他的回调callback

关于图片加载,还有Volley的ImageLoader...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息