展开说说Android之Glide详解_使用篇

Glide因为其自身功能强大并且简单易用深受广大开发者喜欢,绝大部分Android开发者都使用它来加载图片,本篇将详细介绍Glide图片加载库的使用。

1、最简单的加载本地的资源文件中的图片。

java 复制代码
 Glide.with(mActivity).load(R.drawable.station).into(image);

只需要三个方法:

1.1、with(参数) 传入的参数可以是Activity/Fragment/Context都可以,分别是不同的重载方法;

1.2、 load(参数) 这里传入图片路径,看代码它是可以传入任何类型的,但一般开发中就是本地资源文件或者网络图片地址、手机文

java 复制代码
public RequestBuilder<Drawable> load(@Nullable Object model) {
  return asDrawable().load(model);
}

件夹内图片路径以及Bitmap、Drawable和文件流信息都可以。

补充一句人家敢接收任何地址就是给兜底了,大不了什么都加载不出来没其他影响。

1.3、.into(image); 这里就是要传入我们显示图片的ImageView控件。

2、向前进阶一步走

2.1更复杂一些配置

如果加载失败了我也不想这块区域是空白,能不能设置一个错误提示图啊,当然可以error(R.mipmap.errorimg ); 如果网络加载慢我不想用户盯着空白半分钟能不能先设置一个展位图等真正图片加载完以后再显示,当然可以placeholder(R.mipmap.ic_launcher );图片太大了我的ImageView比较小,能不能设置图片的显示大小啊,当然可以override(300,300);图片图片质量太高了很吃内存我这也不需要这么高质量,能不能设置图片的质量啊,当然可以priority(Priority.HIGH );有些图片加载一次真的很耗时能不能设置将图片存文件下次复用啊,当然可以diskCacheStrategy(DiskCacheStrategy.RESOURCE )。

还可以通过listener(@Nullable RequestListener<TranscodeType> requestListener) 监听图片加载情况,他有两个回调方法分别是onResourceReady ‌和onLoadFailed ‌,onResourceReady ‌是当当图片资源成功加载并准备好时触发,可在此回调中执行后续操作;onLoadFailed 当图片加载过程中发生异常时触发,都是return一个布尔类型:返回true表示事件已处理,阻止Glide后续行为(如显示错误占位图),返回false则允许Glide继续执行默认逻辑。onResourceReady最终会通过Handler发送MSG_COMPLETE消息通知主线程加载图片,而onLoadFailed会触发错误处理流程返回错误信息。

java 复制代码
  RequestOptions requestOptions = new RequestOptions();
                requestOptions.placeholder(R.mipmap.ic_launcher).error(R.mipmap.round_spinner_fade_00);
                requestOptions.apply(requestOptions);
                //设置宽高大小
                requestOptions.override(300,300);
                requestOptions.priority(Priority.HIGH);
                requestOptions.diskCacheStrategy(DiskCacheStrategy.RESOURCE);
                Glide.with(mActivity)
                        .load(R.mipmap.pengyuyan)
                        .listener(new RequestListener<Drawable>() {
                            @Override
                            public boolean onLoadFailed(GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                                Log.e("TAG", "onLoadFailed: "+"    e="+e.getMessage() +"  model="+model.toString()+"    target="+target+"   isFirstResource="+isFirstResource );
                                return false;
                            }

                            @Override
                            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                                return false;
                            }
                        })
                        .into(image);

2.2 加载gif

Glide的一个优势是它可以加载git格式

java 复制代码
Glide.with(mActivity).asGif().load(R.drawable.station).into(image);

2.3 加载网络资源时设置请求头header

java 复制代码
GlideUrl url = new GlideUrl("https:bai.com/phooto.png",new LazyHeaders.Builder().addHeader("cookie",cookieStr).build());
Glide.with(mActivity).load(url).into(image);

2.4 加载文件流

此处以assets中图片为例

java 复制代码
try {
                    //加载文件-从Assets文件夹
                    InputStream inputStream = getAssets().open("pengyuyan.webp");
                    BitmapFactory.Options opts = new BitmapFactory.Options();
                    opts.inSampleSize = 2;
                    opts.inPurgeable = true;
                    opts.inInputShareable = true;
                    opts.inPreferredConfig = Bitmap.Config.RGB_565;
                    Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, opts);
                    inputStream.close();
                    Glide.with(mActivity).load(bitmap).into(image);
                } catch (IOException e) {
                    e.printStackTrace();
                }

本文分析基于Glide 4.0.0。

才疏学浅,如有错误,欢迎指正,多谢。

相关推荐
五岳18 小时前
分库分表数据源ShardingSphereDataSource的Connection元数据误用问题分析
java·mysql·爬坑
带刺的坐椅18 小时前
迈向 MCP 集群化:Solon AI (支持 Java8+)在解决 MCP 服务可扩展性上的探索与实践
java·ai·llm·solon·mcp
鼠爷ねずみ18 小时前
SpringCloud前后端整体开发流程-以及技术总结文章实时更新中
java·数据库·后端·spring·spring cloud
代码or搬砖18 小时前
String字符串
android·java·开发语言
AM越.20 小时前
Java设计模式详解--装饰器设计模式(含uml图)
java·设计模式·uml
59803541520 小时前
【java工具类】小数、整数转中文大写
android·java·开发语言
JIngJaneIL21 小时前
基于java + vue个人博客系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
吃喝不愁霸王餐APP开发者21 小时前
Java后端服务在对接全国性霸王餐API时的多数据中心部署与就近调用策略
java·开发语言
从心归零21 小时前
springboot-jpa的批量更新方法
java·spring boot·spring