ImageLoader的使用
依赖 compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
首先在当前程序的Application中调用ImageLoader的初始化init()方法
private void initImageLoader() {
ImageLoaderConfiguration config =new ImageLoaderConfiguration.Builder(this).imageDownloader(
new BaseImageDownloader(this, 60 * 1000, 60 * 1000)) // connectTimeout超时时间
.build();
ImageLoader.getInstance().init(config);
}
使用:
imageview.displayImage();
Picasso:
1.添加依赖
compile 'com.squareup.picasso:picasso:2.5.2'
2.加载显示图片
Picasso.with(this)
.load(......)
.into(view);
load路径: 1)网络图片url 2)file路径
3)content资源 4)Android Resoure
3.设置图片
尺寸resize()、缩放Scale()、旋转Rotation()、
居中裁剪centerCrop()、fit()拉伸
4.转换器Transformation
可以做高斯模糊、圆角、度灰处理、圆形图片等
//高斯模糊
class BlurTransformationimplements Transformation{
RenderScriptrs;
public BlurTransformation(Context context) {
super();
rs = RenderScript.create(context);
}
@Override
public Bitmap transform(Bitmap bitmap) {
// Create another bitmap that will hold the results of the filter.
Bitmap blurredBitmap = bitmap.copy(Bitmap.Config.ARGB_8888,true);
// Allocate memory for Renderscript to work with
Allocation input = Allocation.createFromBitmap(rs, blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL, Allocation.USAGE_SHARED);
Allocation output = Allocation.createTyped(rs, input.getType());
// Load up an instance of the specific script that we want to use.
ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
script.setInput(input);
// Set the blur radius
script.setRadius(25);
// Start the ScriptIntrinisicBlur
script.forEach(output);
// Copy the output to the blurred bitmap
output.copyTo(blurredBitmap);
bitmap.recycle();
return blurredBitmap;
}
@Override
public String key() {
return "blur";
}
}
//度灰处理
class GrayTransformationimplements Transformation{
@Override
public Bitmap transform(Bitmap source) {
int width, height;
height = source.getHeight();
width = source.getWidth();
Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
Canvas c =new Canvas(bmpGrayscale);
Paint paint =new Paint();
ColorMatrix cm =new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f =new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(source,0,0, paint);
if(source!=null && source!=bmpGrayscale){
source.recycle();
}
return bmpGrayscale;
}
@Override
public String key() {
return "gray";
}
}
5.请求优先级
LOW、NORMAL(默认)、HIGH
6.Tag管理类
cancelTag(Object tag) 取消设置了给定tag的所有请求
pauseTag(Object tag) 暂停设置了给定tag 的所有请求
resumeTag(Object tag) resume 被暂停的给定tag的所有请求
7.同步/异步加载图片
同步:同步加载使用get() 方法,返回一个Bitmap 对象
注:使用同步方式加载,不能放在主线程中操作
try{
Bitmap bitmap = Picasso.with(this).load(URL).get();
}catch(IOException e) {
e.printStackTrace();
}
异步:fetch(Callback callback) 异步方式加载图片并给一个回调接口
Picasso.with(this).load(URL).fetch(newCallback() {
@Override
public void onSuccess() {
//加载成功
}
@Override
public void onError() {
//加载失败
}
});
8.缓存
Picasso 有内存缓存(Memory)和磁盘缓存( Disk)
9.Debug和日志
1)缓存指示器
Picasso.with(this)
.setIndicatorsEnabled(true);//显示指示器
2)日志
Picasso.with(this)
.setLoggingEnabled(true);//开启日志打印
10.Picasso扩展
1)配置缓存
//配置缓存
LruCache cache =newLruCache(5*1024*1024);// 设置缓存大小
builder.memoryCache(cache);
2)配置线程池
//配置线程池
ExecutorService executorService = Executors.newFixedThreadPool(8);
builder.executor(executorService);
参考
Fresco:
参考链接:
Glide
implementation 'com.github.bumptech.glide:glide:4.5.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'
使用
Glide.with(Context context).load(Strint url).into(ImageView imageView);
加载动态图片
Glide.with(this)
.load(url)
.asGif()//加载动态图片,若现有图片为非gif图片,则直接加载错误占位图。
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
加载指定大小的图片
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.override(100,100)//指定图片大小
.into(imageView);
关闭框架的内存缓存机制
Glide.with(this)
.load(url)
.skipMemoryCache(true)//传入参数为false时,则关闭内存缓存。
.into(imageView);
关闭硬盘的缓存
Glide.with(this)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.NONE)//关闭硬盘缓存操作
.into(imageView);
复杂的图像变换
dependencies {
implementation 'jp.wasabeef:glide-transformations:3.3.0'
Filters implementation 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'
}
图片虚化
Glide.with(this)
.load(url)
.bitmapTransform(newBlurTransformation(this))
.into(imageView);
图片黑白化
Glide.with(this)
.load(url)
.bitmapTransform(newGrayscaleTransformation(this))
.into(imageView);
多个属性同时使用
Glide.with(this)
.load(url)
.bitmapTransform(newBlurTransformation(this)
.newGrayscaleTransformation(this))
.into(imageView);
网友评论