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

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

相关推荐
其实防守也摸鱼6 分钟前
Fastjson 反序列化漏洞(JNDI注入)
android·数据库·安全·oracle·自动化·fastjson·反序列化
一条小小yu10 分钟前
Spring IoC的理解
java·后端·spring
落魄实习生37 分钟前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈44 分钟前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
狗凯之家源码网2 小时前
微博图床 PHP 系统搭建与实战应用指南
android·开发语言·php
自强的小白2 小时前
核心功能(Service接口)
java·mybatis
消失的旧时光-19432 小时前
(第一篇)JNI 多线程到底难在哪:从 Linux Thread 到 JNIEnv
android·jni·ndk
乌暮3 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
大猫和小黄3 小时前
深入理解 Java Optional:从设计哲学到工程实战
java