Glide的封装和使用总结

在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。连美国的YELP(美国最大点评网站)也开始在自己的项目中引入Glide.根据公司的要求,本人也开始封装GLide.期间遇到不少令人蛋疼的问题.现在在这里总结自己的经验,希望能帮助到后面的使用者.原理什么的就不讲了,这个不是一言两语能说清楚的,而且原理与picasso类似,不过增加了很多细节上的优化,网上很多相关的介绍,这里只讲单纯的使用

首先,添加依赖:

compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.github.bumptech.glide:okhttp-integration:1.0.+'后面这一句在很多博客上说要添加但实际上,如果你项目中引入了OKHTTP那么后面一句是可以省略的.
 
第二步,定义一个类实现 GlideModule,在这个类里你可以定义图片的编码格式,以及自定义的缓存位置.在这个类中,针对内存大小不同的手机,分别定义了两种编码格式,针对低内存的手机,我们设置他的编码格式为
PREFER_RGB_565,针对高内存的手机,我们可以设置编码格式为PREFER_ARGB_8888来提高图片的质量,此外还需要在这里设置图片通过Glidebuilder.setDiskCache()方法来设置图片的硬盘缓存路径,这里传入的参数是一个
DiskLruCacheFactory的对象,你可以通过继承这个类来自定义,图片的硬盘缓存路径,设置8888一般要用来防止加载大图时候,由于图片质量转换造成的色差问题,

第三步.在清单文件中注册第二步中的GlideModule类
<meta-data
    android:name="yourGlideModulePath"
    android:value="GlideModule" />
第四步.在你程序的Application的onCreate方法中,或者直接在第二步的继承自GlideModule的类为ViewTarget设置TagId
ViewTarget.setTagId(R.id.glide_tag);同时在values文件夹下新建ids.xml,添加<item name="image_tag" type="id"/>
在很多博客中,很多大牛说要为Glide设置网络模块,但这一步在早期的Glide版本中需要,在当前版本(3.7.0)中就没有必要了GLide会自动关联你项目中使用的常见网络模块如OkHTTP,VOlley等.

第五步.在自己的图片控件中使用this.setTag(key, url),
Glide.with(context)

       .load(url)//目标URL
        .placeholder(defaultImageResId) //占位图片
        .error(defaultImageResId) //图片获取失败时默认显示的图片
        .diskCacheStrategy(DiskCacheStrategy.ALL) //缓存全尺寸图片,也缓存其他尺寸图片
        .centerCrop()
        .crossFade()
        .into(this);
ok,差不多能用了,细节方面根据自己的需求优化一下就可以了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值