Android(安卓)Glide4.2.0版本使用
16lz
2022-04-09
Glide官网中文文档: https://muyangmin.github.io/glide-docs-cn/ 1:基本用法 多数情况下,使用Glide加载图片非常简单,一行代码足矣: Glide. with (fragment) . load (myUrl) . into (imageView); 取消加载同样很简单: Glide. with (fragment). clear (imageView); 尽管及时取消不必要的加载是很好的实践,但这并不是必须的操作。实际上,当 Glide.with() 中传入的 Activity 或 Fragment 实例销毁时,Glide 会自动取消加载并回收资源。 2:在 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); 可以访问 Glide 的 generated API 页面来获得更多信息。 3:在 ListView 和 RecyclerView 中的使用 在 ListView 或 RecyclerView 中加载图片的代码和在单独的 View 中加载完全一样。Glide 已经自动处理了 View 的复用和请求的取消: @Override public void onBindViewHolder (ViewHolder holder, int position) { String url = urls. get (position); Glide. with (fragment) . load (url) . into (holder. imageView );} 对 url 进行 null 检验并不是必须的,如果 url 为 null,Glide 会清空 View 的内容,或者显示 placeholder Drawable 或 fallback Drawable 的内容。 Glide 唯一的要求是,对于任何可复用的 View 或 Target ,如果它们在之前的位置上,用 Glide 进行过加载操作,那么在新的位置上要去执行一个新的加载操作,或调用 clear() API 停止 Glide 的工作。 @Override public void onBindViewHolder (ViewHolder holder, int position) { if (isImagePosition(position)) { String url = urls. get (position); Glide. with (fragment) . load (url) . into (holder. imageView ); } else { Glide. with (fragment). clear (holder. imageView ); holder. imageView . setImageDrawable (specialDrawable); }} 对 View 调用 clear() 或 into(View) ,表明在此之前的加载操作会被取消,并且在方法调用完成后,Glide 不会改变 view 的内容。如果你忘记调用 clear() ,而又没有开启新的加载操作,那么就会出现这种情况,你已经为一个 view 设置好了一个 Drawable ,但该 view 在之前的位置上使用 Glide 进行过加载图片的操作,Glide 加载完毕后可能会将这个 view 改回成原来的内容。 这里的代码以 RecyclerView 的使用为例,但规则同样适用于 ListView。 4:占位符 4-1) 占位符(Placeholder) 占位符是当请求正在执行时被展示的 Drawable 。当请求成功完成时,占位符会被请求到的资源替换。如果被请求的资源是从内存中加载出来的,那么占位符可能根本不会被显示。如果请求失败并且没有设置 error Drawable ,则占位符将被持续展示。类似地,如果请求的url/model为 null ,并且 error Drawable 和 fallback 都没有设置,那么占位符也会继续显示。 使用 generated API : GlideApp. with (fragment) . load (url) . placeholder (R. drawable . placeholder ) . into (view); Or: GlideApp. with (fragment) . load (url) . placeholder ( new ColorDrawable(Color. BLACK )) . into (view); 4-2) 错误符(Error) rror Drawable 在请求永久性失败时展示。 error Drawable 同样也在请求的url/model为 null ,且并没有设置 fallback Drawable 时展示。 With the generated API : GlideApp. with (fragment) . load (url) . error (R. drawable . error ) . into (view); Or: GlideApp. with (fragment) . load (url) . error ( new ColorDrawable(Color. RED )) . into (view); 4-3 后备回调符(Fallback) fallback Drawable 在请求的url/model为 null 时展示。设计 fallback Drawable 的主要目的是允许用户指示 null 是否为可接受的正常情况。例如,一个 null 的个人资料 url 可能暗示这个用户没有设置头像,因此应该使用默认头像。然而, null 也可能表明这个元数据根本就是不合法的,或者取不到。 默认情况下Glide将 null 作为错误处理,所以可以接受 null 的应用应当显式地设置一个 fallback Drawable 。 使用 generated API : GlideApp. with (fragment) . load (url) . fallback (R. drawable . fallback ) . into (view); Or: GlideApp. with (fragment) . load (url) . fallback ( new ColorDrawable(Color. GREY )) . into (view);
更多相关文章
- Android(安卓)LayoutInflater 源码分析
- Android(安卓)学习笔记--android――Activity加载模式
- Android下PreferenceScreen 加载流程
- AndroidStudio 3.0 加载Android(安卓)support library问题
- Android: requires android.permission.READ_EXTERNAL_STORAGE,
- Android9.0网络请求解决方案_小笔记
- Netroid:强大、快速、易用、可扩展基于Volley实现的Android(安卓
- android从sdcard加载.9.png图片
- 【Android(安卓)okhttp源码解析 二】同步请求流程和源码分析