Glide的使用
目录:
添加依赖:compile'com.github.bumptech.glide:glide:3.7.0'
使用Glide结合列表的样式进行图片加载
如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用
当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法
当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的图片显示
图片的缩放,centerCrop()和fitCenter()
显示gif动画
显示本地视频
缓存策略
优先级,设置图片加载的顺序
当不需要将加载的资源直接放入到ImageView中而是想获取资源的Bitmap对象
集成网络栈(okHttp,Volley)
1.使用Glide结合列表的样式进行图片加载:
1)如果使用的是ListView,可以直接在Adapter的getView方法中使用:
@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
if(null==convertView){
//.....
}
Glide
.with(context)
.load(imageUrls[position])
.into(holder.imageView);
returnconvertView;
}
2)如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用:
@Override
publicvoidonBindViewHolder(RVViewHolderholder,intposition){
Glide.with(MainActivity.this)
.load(args[position])
.into(holder.imageView);
}
3)当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法:
Glide
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.placeholder(R.mipmap.ic_launcher)// can also be a drawable
.into(imageViewPlaceholder);
4)当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的图片显示:
Glide
.with(context)
.load("http://futurestud.io/non_existing_image.png")
.error(R.mipmap.future_studio_launcher)// will be displayed if the image cannot be loaded
.into(imageViewError);
5)图片的缩放,centerCrop()和fitCenter():
//使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的
//Height是match_parent则图片就会被拉伸填充
Glide.with(MainActivity.this)
.load(args[position])
.centerCrop()
.into(holder.imageView);
//使用fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围
//该图像将会完全显示,但可能不会填满整个 ImageView。
Glide.with(MainActivity.this)
.load(args[position])
.fitCenter()
.into(holder.imageView);
6)显示gif动画:
Glide
.with(context)
.load(gifUrl)
.asGif()//判断加载的url资源是否为gif格式的资源
.error(R.drawable.full_cake)
.into(imageViewGif);
7)显示本地视频
StringfilePath="/storage/emulated/0/Pictures/example_video.mp4";
Glide
.with(context)
.load(Uri.fromFile(newFile(filePath)))
.into(imageViewGifAsBitmap);
8)缓存策略:
Glide
.with(context)
.load(Images[0])
.skipMemoryCache(true)//跳过内存缓存
.into(imageViewInternet);
Glide
.with(context)
.load(images[0])
.diskCacheStrategy(DiskCacheStrategy.NONE)//跳过硬盘缓存
.into(imageViewInternet);
DiskCacheStrategy.NONE什么都不缓存
DiskCacheStrategy.SOURCE仅仅只缓存原来的全分辨率的图像
DiskCacheStrategy.RESULT仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的)
DiskCacheStrategy.ALL缓存所有版本的图像(默认行为)
9)优先级,设置图片加载的顺序:
Priority.LOW
Priority.NORMAL
Priority.HIGH
Priority.IMMEDIATE
privatevoidloadImageWithHighPriority(){
Glide
.with(context)
.load(mages[0])
.priority(Priority.HIGH)
.into(imageViewHero);
}
privatevoidloadImagesWithLowPriority(){
Glide
.with(context)
.load(images[1])
.priority(Priority.LOW)
.into(imageViewLowPrioLeft);
Glide
.with(context)
.load(images[2])
.priority(Priority.LOW)
.into(imageViewLowPrioRight);
}
10)当不需要将加载的资源直接放入到ImageView中而是想获取资源的Bitmap对象:
//括号中的300,600代表宽和高但是未有作用
SimpleTargettarget=newSimpleTarget(300,600){
@Override
publicvoidonResourceReady(Bitmapresource,GlideAnimationglideAnimation){
holder.imageView.setImageBitmap(resource);
}
};
Glide.with(MainActivity.this)
.load(args[position])
.asBitmap()
.into(target);
11)集成网络栈(okHttp,Volley):
dependencies{
// your other dependencies
// ...
// Glide
compile'com.github.bumptech.glide:glide:3.6.1'
// Glide's OkHttp Integration
compile'com.github.bumptech.glide:okhttp-integration:1.3.1@aar'
compile'com.squareup.okhttp:okhttp:2.5.0'
}
dependencies{
// your other dependencies
// ...
// Glide
compile'com.github.bumptech.glide:glide:3.6.1'
// Glide's Volley Integration
compile'com.github.bumptech.glide:volley-integration:1.3.1@aar'
compile'com.mcxiaoke.volley:library:1.0.8'
}