android图片管理 gradle,Android图片加载库Glide详解

一、目录

a4c26d1e5885305701be709a3d33442f.png

二、功能

1、图片加载

(1)图片异步加载

ImageView targetImageView =

(ImageView) findViewById(R.id.ImageView);String imageUrl =

"http://218.192.170.132/1.jpg";

//url即图片的下载地址,targetImageView即图片最终要展示的地方。Glide.with(this).load(imageUrl).into(targetImageView); (2)设置加载尺寸

Glide.with(this).load(Url).override(800,800).into(targetImageView); (3)设置加载中及加载失败的图片

api里面对placeholder()、error()函数中有多态实现。

Glide.with(this).load(imageUrl).placeholder(R.drawable.place_icon).error(R.drawable.error_icon).into(targetImageView); (4)设置加载动画Glide.with(this).load(imageUrl).animate(R.anim.item_alpha_in).into(imageView); (5)设置要加载的内容

项目中有很多需要先下载图片然后再做一些合成的功能,比如项目中出现的图文混排。

2、多样式的媒体加载

blog_8a30865f0102wztd.html

3、关于缓存

(1)设置磁盘缓存策略

Glide.with(this).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);

缓存参数说明:

DiskCacheStrategy.NONE:不缓存任何图片,即禁用磁盘缓存

DiskCacheStrategy.ALL :缓存原始图片 & 转换后的图片(默认)

DiskCacheStrategy.SOURCE:只缓存原始图片(原来的全分辨率的图像,即不缓存转换后的图片)

DiskCacheStrategy.RESULT:只缓存转换后的图片(即最终的图像:降低分辨率后 / 或者转换后

,不缓存原始图片)

(2)设置跳过缓存Glide.with(this).load(imageUrl).skipMemoryCache(true).into(imageView);这意味着 Glide 将不会把这张图片放到内存缓存中去。注意:这只是会影响内存缓存!Glide

将会仍然利用磁盘缓存来避免重复的网络请求。

(3)清理缓存

Glide.get(this).clearDiskCache();

//清理磁盘缓存 需要在子线程中执行

Glide.get(this).clearMemory(); //清理内存缓存 可以在UI主线程中进行

4、其他设置(1)生命周期集成.with(Context

context)// 绑定Context

.with(Activity activity);//

绑定Activity

.with(FragmentActivity activity);//

绑定FragmentActivity

.with(Fragment fragment);// 绑定Fragment

注意:A:传入的context类型影响到Glide加载图片的优化程度B:Glide可以监视Activity的生命周期,在Activity销毁的时候自动取消等待中的请求。但是如果你使用Application

context,你就失去了这种优化效果。

(2)设置下载优先级Glide.with(this).load(imageUrl).priority(Priority.NORMAL).into(imageView);

三:Demo实例

步骤:1、在gradle添加依赖compile

'com.github.bumptech.glide:glide:3.7.0'

2、添加网络权限uses-permission

android:name="android.permission.INTERNET" 3、应用

Glide.with(this).load(imageUrl).into(targetImageView);

四:优缺点

1、优点

(1)多样化媒体加载

Glide 不仅是一个图片缓存,它支持 Gif、WebP、缩略图,甚至是 Video。

(2)生命周期集成

通过设置绑定生命周期,我们可以更加高效的使用Glide提供的方式进行绑定,这样可以更好的让加载图片的请求的生命周期动态管理起来。

(3)高效的缓存策略

A. 支持Memory和Disk图片缓存

B. Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,也就意味着 Glide 会根据你

ImageView 的大小来缓存相应大小的图片尺寸(比如你 ImageView 大小是200200,原图是

400400 ,而使用 Glide 就会缓存 200200 规格的图,而 Picasso 只会缓存

400400 规格的。这个改进就会导致 Glide 比 Picasso

加载的速度要快,毕竟少了每次裁剪重新渲染的过程,非常灵活 & 加载速度快)

C. 内存开销小

默认的 Bitmap 格式是 RGB_565 格式,而 Picasso 默认的是 ARGB_8888 格式,这个内存开销要小一半。(

Android关于图片内存计算,共有四种,分别是:

ALPHA_8:每个像素占用1byte内存

ARGB_4444:每个像素占用2byte内存

ARGB_8888:每个像素占用4byte内存(默认,色彩最细腻=显示质量最高=占用的内存也最大)

RGB_565:每个像素占用2byte内存(8bit = 1byte)

举例说明:一个32位的PNG=ARGB_8888=1204x1024,那么占用空间是:1024x1024x(32/8) =

4,194,304kb=4M左右

在解析图片的时候,为了避免oom和节省内存,最好使用ARGB_4444模式(节省一半的内存空间)

)

2、缺点

(1)使用方法复杂

由于Glide其功能强大,所以使用的方法非常多,其源码也相对的复杂。

(2)jar包比较大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值