第三方图片加载库

一、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差不多

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的图片处理,支持各种图片样式


使用:
三、UniversalImageLoader
不支持compile,需下载copy到工程lib下
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
gradle: compile 'com.facebook.fresco:fresco:0.11.0'

使用:
 是基于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
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...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章