Glide和Picasso一样,是一个优秀的图片加载工具库。它可以支持多种图片数据源,在对图片加载并显示时,能较好的处理好缓存、保持较低的内存占用。目前已经被Google用于其官方应用中。
添加Glide
Gradle
和大多数依赖库一样,在Gradle项目中只需要在build.gradle中添加一行:
1 | compile 'com.github.bumptech.glide:glide:3.7.0' |
Maven
Glide也支持 Maven项目:
1 | <dependency> |
图片加载
从一个URL加载图片
和Picasso一样,Glide使用一个流接口(Fluent Interface)。用Glide完成一个完整的图片加载功能请求,需要向其构造器中至少传入3个参数,分别是:
with(Context context)
Context是许多Android API需要调用的, Glide也不例外。这里Glide非常方便,你可以任意传递一个Activity或者Fragment对象,它都可以自动提取出上下文。load(String imageUrl)
这里传入的是你要加载的图片的URL,大多数情况下这个String类型的变量会链接到一个网络图片。into(ImageView targetImageView)
将你所希望解析的图片传递给所要显示的ImageView。
实例:
1 | ImageView targetImageView = (ImageView) findViewById(R.id.imageView); |
如果这个URL链接的图片的确存在,并且ImageView可见,你将会在1~2秒见到这张图片被加载。假如这张图片不存在,Glide会回调相应的出错接口。
从Res资源中加载
不同于上面的String类型的网络URL,这里是一个Int型的的资源id。
1 | int resourceId = R.mipmap.ic_launcher; |
从文件中加载
从资源文件加载,通常是固定的,当你让用户任意选择一张图片来显示的时候,这个文件的路径并非是开发人员预先设定的,从图片文件中加载对于实际应用将会非常有用。需要传递的参数也仅仅是一个文件对象,例如:
1 | // this file probably does not exist on your device. However, you can use any file path, which points to an image file |
从Uri加载
1 | // 这个可以是任何Uri. 这里为了演示,我们只创建了一个指向桌面图标的Uri |
下面一个小的工具函数可以将资源id转换为一个Uri:
1 | public static final String ANDROID_RESOURCE = "android.resource://"; |
当然,Uri并不一定是从资源id中创建,它可以是任意Uri。
参考资料:
签到钱就到 Glide入门教程——1.入门简介、Glide入门教程——2.高级加载