Glide深入探索(一),学会使用

【齐天的博客】转载请注明出处(万分感谢!):
https://blog.csdn.net/qijinglai/article/details/81001708

前言

Stop Trying to Reinvent the Wheel!在图片加载中涉及到很多问题如:缓存处理,大图的加载,OOM异常优化,线程池管理,Handler来进行线程间通信等等等等,本着不造轮子的原则,我们第一步要先学会使用开源框架,之后再去拜读源码了解其中原理。而我们常见常用的图片加载框架有一下几个:

  • UniversalImageLoader
  • Fresco
  • Glide
  • Picasso

其中老牌图片加载框架UniversalImageLoader和Fresco在代码易用上来说完败给了Glide和Picasso,Glide和Picasso这两个框架的使用实在是太简洁了,大多数情况下加载图片都是一行代码就能解决的。

再对比Glide和Picasso,从库大小来说:Picasso更加轻量级,Glide功能更加丰富;从性能上说:Glide加载以及缓存的方式都要优于Picasso,速度更快,Glide它的压缩方法更有利于减少OutOfMemoryError的发生,而且支持GIF。不过Picasso的图片质量更高。

其中我更喜欢Glide,略肤浅但又真实原因是官方推荐…

下面就从使用→源码来解析这个由Bump Technologies开发的图片加载框架Glide。

使用

目前官网最新的Glide版本是4.7.1
要想使用Glide,首先需要将这个库引入到我们的项目当中。

repositories {
  mavenCentral()
  google()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.7.1'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}

除此之外,Glide中大多需要用到网络和缓存功能,因此还得在AndroidManifest.xml中声明以下权限才行:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

添加完必要的代码,下面就可以直接加载图片了,只需一行,轻松搞定

Glide.with(this).load(url).into(imageView);

虽然只有一行,但里面确实做了成吨的操作,
先从表面上解析以下这行代码:

  • with(),创建Glide实例,他里面可以接收Context,Activity,Fragment,ApplicationContext类型的参数,这就保证了程序所有地方都能调用Glide,其中这些不同参数决定了Glide的生命周期,这一点我会在后面源码分析里说到。
  • load(),传入指定的图片资源(可以是网络图,应用资源,本地图,二进制流,Uri对象等等)。
  • into(),传入ImageView对象,但是他不只能传ImageView,这个也会在后面讲到。

其他常用属性

placeHolder(R.drawable….)占位图,error(R.drawable….)异常占位图,diskCashStrategy()关于缓存,asBitmap加载静图,asGif动图,override(w,h)….

其中只要说一下override()制定宽高,实际上Glide是不用制定宽高的,他本着一个用多少加载多少的原则,比如1200*1200的图片放到100*100的控件上,他就会自动压缩图片,只加载100*100,所以完全不用担心内存溢出,内存浪费。

这就是Glide的基本使用,就一行代码而已,也就不多写了。接下来会分几篇来详细分析Glide这个框架的源码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qi T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值