展开说说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。

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

相关推荐
大傻^15 小时前
LangChain4j Spring Boot Starter:自动配置与声明式 Bean 管理
java·人工智能·spring boot·spring·langchain4j
沐硕15 小时前
《基于改进协同过滤与多目标优化的健康饮食推荐系统设计与实现》
java·python·算法·fastapi·多目标优化·饮食推荐·改进协同过滤
愣头不青15 小时前
560.和为k的子数组
java·数据结构
共享家952715 小时前
Java入门(String类)
java·开发语言
Georgewu15 小时前
如何判断应用在鸿蒙卓易通或者出境易环境下?
android·harmonyos
l软件定制开发工作室15 小时前
Spring开发系列教程(34)——打包Spring Boot应用
java·spring boot·后端·spring·springboot
0xDevNull15 小时前
Spring Boot 循环依赖解决方案完全指南
java·开发语言·spring
爱丽_15 小时前
GC 怎么判定“该回收谁”:GC Roots、可达性分析、四种引用与回收算法
java·jvm·算法
bbq粉刷匠15 小时前
Java--多线程--单例模式
java·开发语言·单例模式
随风,奔跑15 小时前
Spring MVC
java·后端·spring