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

编程入门 行业动态 更新时间:2024-10-19 02:25:29

<a href=https://www.elefans.com/category/jswz/34/1768674.html style=Glide深入探索(一),学会使用"/>

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

【齐天的博客】转载请注明出处(万分感谢!):

前言

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这个框架的源码。

更多推荐

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

本文发布于:2024-03-08 15:54:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721356.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Glide

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!