Glide是一款由Bump Technologies开发的图片加载框架,使得我们可以在Android平台上以极度简单的方式加载和展示图片。
1.Glide的引入—在app/build.gradle 当中添加如下依赖
dependencies {
compile 'com.github.bumptech.glide:glide:3.7.0'
}
2.权限的添加Glide中需要用到网络功能,因此你还得在AndroidManifest.xml中声明一下网络权限才行:
<uses-permission android:name="android.permission.INTERNET" />
glide可以完成的功能
(1)加载网络上的图片
(2)加载手机本地的图片
(3)加载应用资源中的图片
一行代码实现了图片加载
Glide.with(this).load(url).into(imageView);
(1)调用Glide.with()方法用于创建一个加载图片的实例;with()方法可以接收Context、Activity或者Fragment类型的参数。—with()方法中传入的实例会决定Glide加载图片的生命周期,如果传入的是Activity或者Fragment的实例,那么当这个Activity或Fragment被销毁的时候,图片加载也会停止。如果传入的是ApplicationContext,那么只有当应用程序被杀掉的时候,图片加载才会停止。
(2)load()方法用于指定待加载的图片资源
// 加载本地图片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);
// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);
// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);
// 加载Uri对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);
//加载网络图片
String url = "http://img4.imgtn.bdimg.com/it/u=1495511926,3386591440&fm=23&gp=0.jpg";
Glide.with(this).load(url).into(imageView);
(3)into()方法,决定让图片显示在哪一个控件上,在load()和into()方法之间串接任意想添加的功能
占位图概念—图片未加载成功时显示的默认图片
.placeholder(R.mipmap.ic_launcher) // can also be a drawable
禁用磁盘缓存功能
diskCacheStrategy(DiskCacheStrategy.NONE)//默认为DiskCacheStrategy.SOURCE
去明确告诉 Glide 跳过内存缓存。这意味着 Glide 将不会把这张图片放到内存缓存中去。
.skipMemoryCache(true)
异常占位图
error(R.drawable.error)
指定图片格式
指定只以静态图片格式显示
asBitmap()方法,这个方法的意思就是说这里只允许加载静态图片,不需要Glide去帮我们自动进行图片格式的判断了。
Glide.with(this).load(url).asBitmap().
placeholder(R.drawable.f5).
diskCacheStrategy(DiskCacheStrategy.NONE).
error(R.mipmap.ic_launcher_round).
override(100,100).
into(imageView);
指定加载图片的大小,不管imageview大小
override(100,100) //传入的单位是px,resizes the image to these dimensions (in pixel). does not respect aspect ratio
Glide既缓存全尺寸又缓存其他尺寸:
Glide.with(this)
.load("http://nuuneoi.com/uploads/source/playstore/cover.jpg")
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(ivImgGlide);
—添加淡入淡出动画,里面可以添加参数毫秒值
.crossFade()
—禁用动画效果
dontAnimate()
Center Cropping
CenterCrop()是一个裁剪技术,即缩放图像让它填充到 ImageView 界限内并且侧键额外的部分。ImageView 可能会完全填充,但图像可能不会完整显示。
.CenterCrop()
fitCenter() 是裁剪技术,即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围。该图像将会完全显示,但可能不会填满整个 ImageView。
.fitCenter()
Transforming
.transform(new CircleTransform(context))
图片请求优先级
.priority( Priority.LOW )
Notes:(图片优先级)
Priority.LOW
Priority.NORMAL
Priority.HIGH
Priority.IMMEDIATE