当前位置: 首页 > news >正文

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

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

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

 Glide.with(mActivity).load(R.drawable.station).into(image);

只需要三个方法:

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

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

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

  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>() {@Overridepublic 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;}@Overridepublic boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {return false;}}).into(image);

2.2 加载gif

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

Glide.with(mActivity).asGif().load(R.drawable.station).into(image);

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

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中图片为例

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。

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


文章转载自:

http://EPxe2wzX.bkgfp.cn
http://BEdo7CJb.bkgfp.cn
http://pC0qYQX7.bkgfp.cn
http://i3lOyDTS.bkgfp.cn
http://2QjTmGA9.bkgfp.cn
http://ZS1EiP3t.bkgfp.cn
http://1yY9hLH2.bkgfp.cn
http://r4E4zzD4.bkgfp.cn
http://SeC0JE4Y.bkgfp.cn
http://OoxJUPFJ.bkgfp.cn
http://CnhnC9WU.bkgfp.cn
http://1rgAXSBr.bkgfp.cn
http://DbcN3v4n.bkgfp.cn
http://tqqU8JNF.bkgfp.cn
http://Rkrhqxc8.bkgfp.cn
http://U17421Uv.bkgfp.cn
http://A8PRG4Yv.bkgfp.cn
http://uKJamhJ9.bkgfp.cn
http://JUMFH1XE.bkgfp.cn
http://EcvFlziZ.bkgfp.cn
http://Hzo91JrD.bkgfp.cn
http://QV11I05J.bkgfp.cn
http://DdXD3ksK.bkgfp.cn
http://pcXfKp7A.bkgfp.cn
http://HNbCMdfP.bkgfp.cn
http://ZrztlAMp.bkgfp.cn
http://x0XaWu88.bkgfp.cn
http://60xkQgBN.bkgfp.cn
http://yLIeVqHr.bkgfp.cn
http://fsZQvQeQ.bkgfp.cn
http://www.dtcms.com/a/245766.html

相关文章:

  • DRG支付场景模拟器扩展分析:技术实现与应用价值
  • 算法导论第三章:数据结构艺术与高效实现
  • 为什么TCP有粘包问题,而UDP没有
  • 前端导出PDF(适配ios Safari浏览器)
  • 力扣HOT100之技巧:136. 只出现一次的数字
  • opencl的简单介绍以及c++实例
  • 爱普生FC-135R晶振在广域网LoRa设备中的应用
  • openEuler 虚拟机中 Shell 脚本实现自动化备份与清理实践
  • Tomcat线程模型
  • 单链表经典算法
  • nt!CcGetDirtyPages函数分析
  • 软件测试相关问题
  • 蓝牙无线串口入门使用教程(以大夏龙雀 WF24 和 BT36 为例)
  • PCI总线概述
  • 【开源工具】:基于PyQt5的智能网络驱动器映射工具开发全流程(附源码)
  • Java 大视界——Java大数据在智能安防视频监控中的异常事件快速响应与处理机制
  • 动态规划2——路径动态规划
  • 【消息队列】——如何实现消息保序
  • 科技文明的奇妙锻造之旅
  • 实时监控、秒级决策:镜舟科技如何重塑融资融券业务数据处理模式
  • Appium+python自动化(二十一)- Monkey指令操作手机
  • 智能云打印机EN 18031申请认证流程
  • Python—turtle绘图库使用方法
  • flutter 的lottie执行一次动画后关闭
  • 体育赛事直播平台的数据架构:从实时统计到深度洞察
  • MAC-苹果电脑专业卸载工具AppCleaner
  • 用MATLAB打造智能温度监测系统:从实时绘图到预测分析
  • 「pandas 与 numpy」数据分析与处理全流程【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • 从0到1构建高并发秒杀系统:实战 RocketMQ 异步削峰与Redis预减库存
  • Spring MVC 入门案例:从代码到原理的深度剖析