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

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

相关推荐
AD钙奶-lalala17 分钟前
android:foregroundServiceType详解
android
编程乐学(Arfan开发工程师)1 小时前
56、原生组件注入-原生注解与Spring方式注入
java·前端·后端·spring·tensorflow·bug·lua
周某某~2 小时前
七.适配器模式
java·设计模式·适配器模式
大胃粥3 小时前
Android V app 冷启动(13) 焦点窗口更新
android
奔跑的小十一4 小时前
JDBC接口开发指南
java·数据库
刘大猫.4 小时前
业务:资产管理功能
java·资产管理·资产·资产统计·fau·bpb·mcb
YuTaoShao4 小时前
Java八股文——JVM「内存模型篇」
java·开发语言·jvm
开开心心就好4 小时前
电脑扩展屏幕工具
java·开发语言·前端·电脑·php·excel·batch
零叹6 小时前
篇章十 数据结构——排序
java·数据结构·算法·排序算法