注意四种磁盘缓存机制
修改Glide默认的网络请求库
监听图片的加载进度
自定义缓存的设置
如何清理缓存:清理缓存:包括清理内存缓存、清理磁盘缓存(开启子线程)
实现图形转换(需要自定义类)
Glide加载图片的特点:
优点是比picasso加载的快,用户体验比较好!图片加载速度慢,一直是移动端的一个大问题。
总体特点:Glide比picasso框架加载图片的速度快,但是需要更大的空间来缓存;
1)将activity和fragment作为参数的好处是:
图片加载会和Activity/Fragment的生命周期保持一致,防止内存泄露;Activity的生命周期状态。
2)在加载的图片质量方面:
Glide默认的图片Bitmap格式是RGB_565;消耗的内存比较小;
3)加载GIF图片:(核心特点: Picasso不具备这种特点的)
Glide动画会消耗太多的内存,不建议使用。会有动画效果。
4)在缓存策略与加载速度方面:(这是影响加载速度的主要原因)
Glide缓存的图片大小与ImageView尺寸相同;将InageView调整成不同大小,不管大小如何设置,Glide会为每种大小的ImageView缓存一次。
更利于减少内存溢出的发生。
---------------------------------------------------------------------------------------------------
Glide高级用法以及性能优化:
1)设置Glide的网络访问库:(设置Glide的网络访问方式,)
Glide图片加载框架使用哪种网络请求访问网络?
默认使用HttpUrlConnection访问网络,可以配置为okhttp或者volley;怎么配置呢?
A:导入网络集成包
B:在应用程序类中定义一个方法,用于初始化Glide,注册一个Glide对象
2)如何设置监听图片加载的进度
设置一个FrameLayout布局,将ImageView进行包裹,其中还要设置一个进度条,放置在帧布局的正中间;
关键是在into方法中进行方法重写三个方法。 明天一个一个试试 如何设置代理进行下载资源
3)自定义缓存设置 图片的缓存都是分为三级的:内存级,磁盘级,网络级;
Glide有四种磁盘缓存机制
4) 清楚缓存
清理内存缓存:
清理磁盘缓存:开启一个子线程,应为是耗时操作!
5)如何自定义缓存空间的大小? 两个步骤
自定义一个CustomGlideModule
在清单文件中进行配置
6) 自定义图形转换
圆角图形处理(对图片进行圆角处理): 定义一个类,进行处理
图像旋转处理:
2014谷歌推出的;图片加载速度快,用户体验好(最大的优点);需要比较大的内存空间进行图片缓存2)Glide如何导包?
compile 'com.github.bumptech.glide:glide:3.5.2'3)Glide基本用法(非常简单)
compile 'com.github.bumptech.glide:glide:3.7.0'
可以加载本地资源、资产目录、sd卡中的文件
基本语法
加载网络图片资源:Glide.with(context).load(url).into(ImageView);
加载本地资源: Glide.with(this).load(R.mipmap.ic_launcher).into(ImageView);
加载资产目录资源:Glide.with(this).load("file:///android_assret/logo.png").into(ImageView);
加载Sd卡资源: Glide.with(this).load(new File("图片路径")).into(ImageView);
Glide类名要记住 load方法重载
4)Glide常见设置
这些方法都在DrawableRequestBuilder类中进行设置的
设置占位图片(加载过程中与加载失败): Glide.with(context).load(url).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher)into(ImageView);------------重新设置图形大小---------------------
淡入淡出 .crossFade() 图片加载动画淡入淡出
无动画 .dontAnimate()
图片重新调整大小 .override(width,height)------------缓存(每张图片都要进行设置)-----------
图片裁切类型: centerCrop fitcenter
自定义图形转换: .transform()
内存级别的缓存----->磁盘级别的缓存(sd卡)
放弃内存缓存: memory cache
.skipMemoryCache() skip 跳过、漏掉
.diskCacheStrategy(DiskCacheStrategy.NONE)
有四种缓存模式:源码中通过枚举进行定义的
Glide在加载图片的过程中,可以进行debug的调试!
设置ImageView的裁切类型
把图片下载到sd卡中(加载图片到sdcard卡的私有缓存目录下),并且把sd卡中的图片进行展示出来
封装一个单例的okhttpclient
Glide加载图片代码实现
with参数
图片质量(肉眼看出来)
内存消耗少
加载gif动图
缓存策略以及加载速度
优化图片加载的两种方式:
1)Glide 图片加载框架;
2)请求图片的时候,设置要请求图片的尺寸大小;
5)Glide性能优化(高级用法)
自定义缓存空间的大小
自定义图形旋转
自定义圆形图片
自定义圆角图片 自定义圆角
Glide加载图像以及磁盘缓存的方式比较优化,且Glide更有利于减少OutOfMemoryError的发生
GIF动画是Glide的杀手锏。
with()里面的参数,建议传递参数的时候,传递activity或者fragment,而不是Context,因为它的生命周期比较长。
优化图片加载的两种方式:
1)Glide 图片加载框架;
2)请求图片的时候,设置要请求图片的尺寸大小;
transform()方法主要用于图形转换的,比如圆角,圆形等等;
自定义图形转换,需要自定义类去实现;
Glide默认使用手机内置存储进行磁盘缓存,可以配置为外部存储,可以配置缓存大小,图片池大小,默认
使用两个线程池来分别执行读取缓存和下载任务!
Glide加载图片的特点:
优点是比picasso加载的快,用户体验比较好!图片加载速度慢,一直是移动端的一个大问题。
总体特点:Glide比picasso框架加载图片的速度快,但是需要更大的空间来缓存;
1)将activity和fragment作为参数的好处是:
图片加载会和Activity/Fragment的生命周期保持一致,防止内存泄露;Activity的生命周期状态。
2)在加载的图片质量方面:
Glide默认的图片Bitmap格式是RGB_565;消耗的内存比较小;
3)加载GIF图片:(核心特点: Picasso不具备这种特点的)
Glide动画会消耗太多的内存,不建议使用。会有动画效果。
4)在缓存策略与加载速度方面:(这是影响加载速度的主要原因)
Glide缓存的图片大小与ImageView尺寸相同;将InageView调整成不同大小,不管大小如何设置,Glide会为每种大小的ImageView缓存一次。
更利于减少内存溢出的发生。
------------------------------------------------------------
Glide高级用法以及性能优化: 只有五个小点的
1)设置Glide的网络访问库:(设置Glide的网络访问方式,)
Glide图片加载框架使用哪种网络请求访问网络?
默认使用HttpUrlConnection访问网络,可以配置为okhttp或者volley;怎么配置呢?
A:导入网络集成包
B:在应用程序类中定义一个方法,用于初始化Glide,注册一个Glide对象;
2)如何设置监听图片加载的进度
设置一个FrameLayout布局,将ImageView进行包裹,其中还要设置一个进度条,放置在帧布局的正中间;
关键是在into方法中进行方法重写三个方法。
3)自定义缓存设置 图片的缓存都是分为三级的:内存级,磁盘级,网络级;
Glide有四种磁盘缓存机制: 默认的缓存机制是只保存转换之后的图片资源。
//DiskCacheStrategy.NONE 设置SD卡缓存模式、不在sd卡中进行图片缓存!
//DiskCacheStrategy.RESULT 缓存策略是指:将处理之后的图片进行缓存(比如旋转后的图片)!
//DiskCacheStrategy.SOURCE 缓存策略是指:将原始的图片进行缓存;只保存原始的图片,不保存变形之后的图片!
//DiskCacheStrategy.ALL 缓存策略是指:将原始的图片进行缓存,又将转换之后的图片进行保存!
清楚Glide图片缓存,如何实现?
4) 清楚缓存
清理内存缓存:
清理磁盘缓存:一定要在独立的线程中进行,因为是一个耗时操作!
5)如何自定义磁盘缓存空间的大小,图片质量
写一个自定义类去继承GlideModule,通过Builder进行设置;
在清单文件中进行配置
6) 自定义图形转换
图像旋转处理(对图片进行旋转处理):需要自定义图形旋转类
圆角图形处理(对图片进行圆角处理): 需要自定义圆角图形类