1.1 Glide的概述
Glide,就像 Picasso,可以从多个源去加载和显示图片,同时也兼顾缓存和在做图片处理的时候维持一个低内存消耗。它已经在 Google 官方 APP (如 Google 2015开发者大会的应用程序)中使用了,就和 Picasso 一样受欢迎。
1.2 Glide的引入
1.2.1 Glide的配置
在AndroidMainFest.xml中添加以下代码:
dependencies {
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}
其中compiler库是用于生成Generated API的。Generated API 目前可以在 Application 模块内直接使用。这一限制可以让我们仅持有一份 Generated API,而不是各个 Library 和 Application 中均有自己定义出来的 Generated API。这一做法会让 Generated API 的调用更简单,并确保 Application 模块中 Generated API 调用的选项在各处行为一致。?
1.2.2 Glide的基本属性
Glide建造者要求最少有三个参数:
- with(Fragment fragment/Context context),很多AndroidAPI调用,Context是必须的。
- load(String imageUrl),这个ImageUrl就是我们要传的图片地址。
- into(ImageView imageView),这个就是我们想把URL 加载到哪个ImageView中。
1.2.3 Glide的介绍
Glide的load()可以加载一下几种类型的图片资源:
参数 | 说明 |
---|
.load(String string) | string可以为一个文件路径、uri或者url | .load(Uri uri) | uri类型 | .load(File file) | 文件 | .load(Integer resourceId) | 资源Id,R.drawable.xxx或者R.mipmap.xxx | .load(byte[] model) | byte[]类型 | .load(T model) | 自定义类型 |
1.3 Glide的使用
1.3.1 占位符
Glide允许用户指定三种不同类型的占位符,分别在三种不同场景使用:
- placeholder(占位符):占位符是当请求正在执行时被展示的 Drawable 。当请求成功完成时,占位符会被请求到的资源替换。
- error(错误符):在请求永久性失败时展示。
- fallback(后备回调符):在请求的url/model为?
null ?时展示。
1.3.2 RequestOptions(请求选项)
可用的选项包括(但不限于):
- 占位符(
Placeholders ) - 转换(
Transformations ) - 缓存策略(
Caching Strategies ) - 组件特有的设置项,例如编码质量,或
Bitmap 的解码配置等。
?1.3.3 TransitionOptions(过渡选项)
TransitionOptions用于决定你的加载完成时会发生什么。TransitionOptions可以应用以下变换:
?1.3.4?RequestBuilder(请求骨架)
RequestBuilder 是Glide中请求的骨架,负责携带请求的url和你的设置项来开始一个新的加载过程。使用?RequestBuilder 可以指定:
- 你想加载的资源类型(Bitmap, Drawable, 或其他)
- 你要加载的资源地址(url/model)
- 你想最终加载到的View
- 任何你想应用的(一个或多个)
RequestOption ?对象 - 任何你想应用的(一个或多个)
TransitionOption ?对象 - 任何你想加载的缩略图?thumbnail()
?1.3.5 变换
在Glide中,Transformations 可以获取资源并修改它,然后返回被修改后的资源。通常变换操作是用来完成剪裁或对位图应用过滤器,但它也可以用于转换GIF动画,甚至自定义的资源类型。
Glide 提供了很多内置的变换,包括:
- CenterCrop(裁剪):缩放图像让它填充到 ImageView 界限内并且裁剪额外的部分,ImageView 会被完全填充,但图像可能不会完整显示。
- FitCenter(裁剪):即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围,该图像将会完全显示。
- CircleCrop(圆角):图片以圆形的形式显示。.png好像无效果
上面3个为内置对象
- RoundedCorners(指定裁剪半径的圆角):
- GranularRoundedCorners(指定4个角的裁剪半径):参数一次为:左上、右上、右下、左下
- Rotate(旋转):指定旋转角度。正数为顺时针旋转
使用:requestOptions.transform() +?.apply(requestOptions) 或 直接.transform() 的形式
1.3.6?Generated API的使用
暂无
MainActivity.java代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView iv1 = findViewById(R.id.iv1);
ImageView iv2 = findViewById(R.id.iv2);
RequestOptions requestOptions = new RequestOptions()
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.fallback(R.drawable.fallback)
.override(100,100); //override指定加载图片大小
Glide.with(this)
.load(R.drawable.ceshi)
.apply(requestOptions)
.into(iv1);
Glide.with(this)
.load(R.drawable.ceshi)
.apply(requestOptions)
.transform(new CircleCrop(),new Rotate(45))
.into(iv2);
}
}
运行效果图:
更多具体详见:Glide v4 : 目标 (muyangmin.github.io)
|