更多代码可以查询本人GitHub:欢迎阅读,star点起来。
Glide二次封装库源码
前言
为什么选择Glide?
- Glide 轻量级
- 速度快
- 可以根据所需加载图片的大小自动适配所需分辨率的图
- 支持多种格式图片(静态webp,动态gif,jpeg,jpg,png)
- 支持多种数据源图片(url,drawable,src,file,asserts,raw)
- Google主导
- 更多知识点可以看我的上一篇文章:
Picasso,Glide,Fresco对比分析
http://blog.csdn.net/github_33304260/article/details/70213300
已经很方便了,为啥还要封装?
- 避免以后换框架的时候需要改的地方太多。如果封装了只需要改封装的方法而不会影响到所有的代码。
- 入口统一,所有图片加载都在这一个地方管理,一目了然,即使有什么改动我也只需要改这一个类就可以了。
- 虽然现在的第三方库已经非常好用,但是如果我们看到第三方库就拿来用的话,很可能在第三方库无法满足业务需求或者停止维护的时候,发现替换库,工作量可见一斑。这就是不封装在切库时面临的窘境!
- 外部表现一致,内部灵活处理原则
- 更多内容参考:如何正确使用开源项目?
初识Glide
Glide配置
1、 在build.gradle中添加依赖:
dependencies {
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:support-v4:19.1.0'
}
2、混淆
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
3、权限
如果是联网获取图片或者本地存储需要添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Glide基本使用
Glide使用一个流接口(Fluent Interface)。用Glide完成一个完整的图片加载功能请求,需要向其构造器中至少传入3个参数,分别是:
- with(Context context)- Context是许多Android API需要调用的, Glide也不例外。这里Glide非常方便,你可以任意传递一个Activity或者Fragment对象,它都可以自动提取出上下文。
- load(String imageUrl) - 这里传入的是你要加载的图片的URL