返回介绍

占位符

发布于 2025-01-04 00:12:05 字数 1905 浏览 0 评论 0 收藏 0

类型

Glide 允许用户指定三种不同的占位符以是适应不同的场景:

  • placeholder
  • error
  • fallback

Placeholder

占位符是在请求正在进行时显示的图像。当请求成功完成时,占位符将会被替换为请求的资源。如果从内存中加载所请求的资源,占位符可能永远不会显示。如果请求失败并且未设置错误图像,则占位符会一直显示。同样地,如果请求的 URL/Model 为空,错误图像跟回调图像都没有设置,占位符也会一直显示。

使用生成的 API:

GlideApp.with(fragment)
  .load(url)
  .placeholder(R.drawable.placeholder)
  .into(view);

或者:

GlideApp.with(fragment)
  .load(url)
  .placeholder(new ColorDrawable(Color.BLACK))
  .into(view);

Error

当请求最终失败的时,会显示错误图像。当请求的 URL/Model 为空,并且没有设置回调的时候,也会显示错误图像。

使用生成的 API:

GlideApp.with(fragment)
  .load(url)
  .error(R.drawable.error)
  .into(view);

或者:

GlideApp.with(fragment)
  .load(url)
  .error(new ColorDrawable(Color.RED))
  .into(view);

Fallback

当一个请求的 URL/Model 为空时,会显示回调图像。回调图像的主要目的是允许用户表明参数是否允许为空。例如,用户信息网站为空表明用户没有设置配置文件照片。然而,空也可以表明元数据是无效的或者无法获取。默认情况下,Glide 认为 URL/Model 为空是一种错误,用户如果希望自己处理空,应该设置回调图像。

使用生成的 API:

GlideApp.with(fragment)
  .load(url)
  .fallback(R.drawable.fallback)
  .into(view);

或者:

GlideApp.with(fragment)
  .load(url)
  .fallback(new ColorDrawable(Color.GREY))
  .into(view);

占位符的显示流程可以参照下图:

常见问题

  1. 占位符是异步加载的吗?

答:不是。占位符的加载是在 Android 的主线程中处理的。我们希望占位符尽可能小并且容易被系统缓存。

  1. 转换可以作为占位符吗?

答:不行。转换只适用于请求资源,不能作为占位符。比如,您加载一个圆形的图像,您可能希望使用圆形的占位符资源。您可以考虑自定义 View 来截取占位符作为您的转换。

  1. 在多个 View 中可以使用同一个占位符图像吗?

答:通常可以,任何非静态的图像(如 BitmapDrawable)是可以在多个 View 中显示的。然而有状态的图像在多个 View 中同时显示是不安全的,因为 View 的状态会被改变。对于有状态的图像,请使用资源 id,或者使用 newDrawable() 传递给每个请求一个新的副本。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文