glide

本文介绍了Glide在Android中的使用,包括加载图片、取消加载、在Application中的配置、定制请求、RequestBuilder的复用、过渡选项的设置、signature的使用以及placeholder、error和fallback的配置。Glide能自动管理资源,提供丰富的选项和过渡效果,同时支持缓存策略的自定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1. glide加载图片

Glide.with(activity).load(myUrl).into(imageView);

2. 取消加载图片   尽管及时取消不必要的加载是很好的实践,但这并不是必须的操作。实际上,当 Glide.with() 中传入的 Activity 或 Fragment 实例销毁时,Glide 会自动取消加载并回收资源。

Glide.with(activity).clear(imageView);

3.在 Application 模块中的使用

在 Application 模块中,可创建一个添加有 @GlideModule 注解,继承自 AppGlideModule 的类。此类可生成出一个流式 API,内联了多种选项,和集成库中自定义的选项:

package com.example.myapp;

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

生成的 API 默认名为 GlideApp ,与 AppGlideModule 的子类包名相同。在 Application 模块中将 Glide.with() 替换为 GlideApp.with(),即可使用该 API 去完成加载工作。

GlideApp.with(fragment)
   .load(myUrl)
   .placeholder(placeholder)
   .fitCenter()
   .into(imageView);

 注意: 程序库 (Library)  应该包含 AppGlideModule 实现

 4.定制请求

Glide 提供了许多可应用于单一请求的选项,包括变换、过渡、缓存选项等。

默认选项可以直接应用于请求上:

Glide.with(fragment)
  .load(myUrl)
  .placeholder(placeholder)
  .fitCenter()
  .into(imageView);

选项也可以通过 RequestOptions 类来在多个请求之间共享:

apply() 方法可以被调用多次,因此 RequestOption 可以被组合使用。如果 RequestOptions 对象之间存在相互冲突的设置,那么只有最后一个被应用的 RequestOptions 会生效。

RequestOptions sharedOptions = 
    new RequestOptions()
      .placeholder(placeholder)
      .fitCenter();

Glide.with(fragment)
  .load(myUrl)
  .apply(sharedOptions)
  .into(imageView1);

Glide.with(fragment)
  .load(myUrl)
  .apply(sharedOptions)
  .into(imageView2);


5.RequestBuilder 可以被复用于开始多个请求:

RequestBuilder<Drawable> requestBuilder =
        Glide.with(fragment)
            .asDrawable()
            .apply(requestOptions);

for (int i = 0; i < numViews; i++) {
   ImageView view = viewGroup.getChildAt(i);
   String url = urls.get(i);
   requestBuilder.load(url).into(view);
}

 

6.过渡选项

TransitionOptions 用于决定你的加载完成时会发生什么。

使用 TransitionOption 可以应用以下变换:

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

如果不使用变换,你的图像将会“跳入”其显示位置,直接替换掉之前的图像。为了避免这种突然的改变,你可以淡入view,或者让多个Drawable交叉淡入,而这些都需要使用TransitionOptions完成。

例如,要应用一个交叉淡入变换:

import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;

Glide.with(fragment)
    .load(url)
    .transition(withCrossFade())
    .into(view);

不同于RequestOptionsTransitionOptions是特定资源类型独有的,你能使用的变换取决于你让Glide加载哪种类型的资源。

这样的结果是,假如你请求加载一个 Bitmap ,你需要使用 BitmapTransitionOptions ,而不是 DrawableTransitionOptions 。同样,当你请求加载 Bitmap 时,你只需要做简单的淡入,而不需要做复杂的交叉淡入。

7.标签signature的使用

问题:Glide加载相同URL时由于缓存无法更新图片

可以通过更改缓存配置解决该问题以外,还可以通过设置signature标签使每次的请求都是一个新的请求

//在需要重新获取图片时调用 
String sign = String.valueOf(System.currentTimeMillis()); 
Glide.with(this).load(xxx).signature(new StringSignature(sign)).into(xxx);

8..placeholder .error .fallback

    当没有网络的时候 显示error图片;

    此时如果突然有网了,图片会从placeholder变成你想要展示的图片,注意这种情况前提是权限清单里需要有android.permission.ACCESS_NETWORK_STATE权限,否则就算网络改变了,还是显示error图片;

Glide.with(MainActivity.this)
        .load("https://xxxx")
        .placeholder(R.mipmap.ic_launcher)
        .error(R.mipmap.error)
        .fallback(R.mipmap.fallback)
        .crossFade(2000)
        .into(imageView);

注意:对 url 进行 null 检验并不是必须的,如果 url 为 null,Glide 会清空 View 的内容,或者显示 placeholder Drawable 或 fallback Drawable 的内容。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值