Android源码系列-解密Glide
2020/3/2 23:01:19
本文主要是介绍Android源码系列-解密Glide,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Glide是什么?
Glide是一个Android的图片加载和缓存库,它主要专注于大量图片的流畅加载。是google所推荐的图片加载库,作者是bumptech。这个库被广泛运用在google的开源项目中,包括2014年的google I/O大会上发布的官方App。
简介
WIKI地址:WIKI官网
Github地址:Github
特点
1、多样化媒体加载
Glide 不仅是一个图片缓存,它支持 Gif、WebP等格式
2、生命周期集成
我们可以更加高效的使用Glide提供的方式进行绑定,这样可以更好的让加载图片的请求的生命周期动态管理起来
3、高效的缓存策略
- 支持Memory和Disk图片缓存
- 根据 ImageView 的大小来缓存相应大小的图片尺寸
- 内存开销小,默认的 Bitmap 格式是 RGB_565 格式(3.X版本),4.7.1版本默认格式为(PREFER_ARGB_8888_DISALLOW_HARDWARE)
- 使用BitmapPool进行Bitmap的复用
4、 提供丰富的图片转换Api,支持圆形裁剪、平滑显示等特性
Glide怎么用?
1、gradle引入库,implementation 'com.github.bumptech.glide:glide:4.7.1'
2、配置Glide的with load apply into等方法
public void loadImageView(ImageView view,String url){ //属性的配置 RequestOptions options = new RequestOptions() //加载成功之前占位图 .placeholder(R.mipmap.ic_launcher) //加载错误之后的错误图 .error(R.mipmap.ic_launcher) //指定图片的尺寸 .override(1000,800) //指定图片的缩放类型为fitCenter (等比例缩放图片,宽或者是高等于ImageView的宽或者是高。) .fitCenter() //指定图片的缩放类型为centerCrop (等比例缩放图片,直到图片的狂高都大于等于ImageView的宽度,然后截取中间的显示。) .centerCrop() .circleCrop()//指定图片的缩放类型为centerCrop (圆形) //跳过内存缓存 .skipMemoryCache(true) //缓存所有版本的图像 .diskCacheStrategy(DiskCacheStrategy.ALL) //跳过磁盘缓存 .diskCacheStrategy(DiskCacheStrategy.NONE) //只缓存原来分辨率的图片 .diskCacheStrategy(DiskCacheStrategy.DATA) //只缓存最终的图片 .diskCacheStrategy(DiskCacheStrategy.RESOURCE) .priority(Priority.HIGH) ; //加载图片 Glide.with(getApplicationContext()) .load(url) .apply(options) .into(view); } 复制代码
3、执行ImageView的加载
loadImageView(ivPic,"http://b.hiphotos.baidu.com/image/pic/item/d52a2834349b033bda94010519ce36d3d439bdd5.jpg"); 复制代码
详细的使用教程及option的配置,推荐参考
Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
Glide核心执行流程是怎样?
基础概念
类型 | 说明 |
---|---|
Data | 代表原始的,未修改过的资源,对应dataClass |
Resource | 修改过的资源,对应resourceClass |
Transcoder | 资源转换器,比如BitmapBytesTranscoder(Bitmap转换为Bytes),GifDrawableBytesTranscoder |
ResourceEncoder | 持久化数据的接口,注意,该类并不与decoder相对应,而是用于本地缓存的接口 |
ResourceDecoder | 数据解码器,比如ByteBufferGifDecoder(将ByteBuffer转换为Gif),StreamBitmapDecoder(Stream转换为Bitmap) |
ResourceTranscoder | 资源转换器,将给定的资源类型,转换为另一种资源类型,比如将Bitmap转换为Drawable,Bitmap转换为Bytes |
Transformation | 比如对图片进行FitCenter,CircleCrop,CenterCrop的transformation,或者根据给定宽高对Bitmap进行处理的BitmapDrawableTransformation |
Target | request的载体,各种资源对应的加载类,含有生命周期的回调方法,方便开发人员进行相应的准备以及资源回收工作 |
总体设计
1、构建Request,实现类为SingleRequest,用于发起一个加载的请求
这篇关于Android源码系列-解密Glide的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路