图片加载及缓存框架Glide在安卓开发中的应用

注意四种磁盘缓存机制
修改Glide默认的网络请求库
监听图片的加载进度
自定义缓存的设置
如何清理缓存:清理缓存:包括清理内存缓存、清理磁盘缓存(开启子线程)
实现图形转换(需要自定义类)


Glide加载图片的特点:

优点是比picasso加载的快,用户体验比较好!图片加载速度慢,一直是移动端的一个大问题。

总体特点:Glidepicasso框架加载图片的速度快,但是需要更大的空间来缓存;

1)activityfragment作为参数的好处是:

图片加载会和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) 自定义图形转换

圆角图形处理(对图片进行圆角处理): 定义一个类,进行处理

图像旋转处理:



1)综合介绍Glide框架
2014谷歌推出的;图片加载速度快,用户体验好(最大的优点);需要比较大的内存空间进行图片缓存
2)Glide如何导包?
compile 'com.github.bumptech.glide:glide:3.5.2'
compile 'com.github.bumptech.glide:glide:3.7.0'
3)Glide基本用法(非常简单)
可以加载本地资源、资产目录、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) 自定义图形转换
图像旋转处理(对图片进行旋转处理):需要自定义图形旋转类
圆角图形处理(对图片进行圆角处理): 需要自定义圆角图形类






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值