Android中Glide的使用

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建造者要求最少有三个参数:

  1. with(Fragment fragment/Context context),很多AndroidAPI调用,Context是必须的。
  2. load(String imageUrl),这个ImageUrl就是我们要传的图片地址。
  3. 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可以应用以下变换:

  • View淡入
  • 与占位符交叉淡入
  • 或者什么都不发生

 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)

猜你喜欢

转载自blog.csdn.net/weixin_57542177/article/details/124074397