Glide入门教程(1)Glide简介与基本使用

       Glide和Picasso一样,是一个优秀的图片加载工具库。它可以支持多种图片数据源,在对图片加载并显示时,能较好的处理好缓存、保持较低的内存占用。目前已经被Google用于其官方应用中。

添加Glide

Gradle

       和大多数依赖库一样,在Gradle项目中只需要在build.gradle中添加一行:

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

Maven

       Glide也支持 Maven项目:

1
2
3
4
5
6
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>glide</artifactId>
<version>3.7.0</version>
<type>aar</type>
</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
2
3
4
5
6
7
ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
String internetUrl = "http://i.imgur.com/DvpvklR.png";

Glide
.with(context)
.load(internetUrl)
.into(targetImageView);

       如果这个URL链接的图片的确存在,并且ImageView可见,你将会在1~2秒见到这张图片被加载。假如这张图片不存在,Glide会回调相应的出错接口。

从Res资源中加载

       不同于上面的String类型的网络URL,这里是一个Int型的的资源id。

1
2
3
4
5
6
int resourceId = R.mipmap.ic_launcher;

Glide
.with(context)
.load(resourceId)
.into(imageViewResource);

从文件中加载

       从资源文件加载,通常是固定的,当你让用户任意选择一张图片来显示的时候,这个文件的路径并非是开发人员预先设定的,从图片文件中加载对于实际应用将会非常有用。需要传递的参数也仅仅是一个文件对象,例如:

1
2
3
4
5
6
7
8
// this file probably does not exist on your device. However, you can use any file path, which points to an image file

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Running.jpg");

Glide
.with(context)
.load(file)
.into(imageViewFile);

从Uri加载

1
2
3
4
5
6
7
8
// 这个可以是任何Uri. 这里为了演示,我们只创建了一个指向桌面图标的Uri

Uri uri = resourceIdToUri(context, R.mipmap.future_studio_launcher);

Glide
.with(context)
.load(uri)
.into(imageViewUri);

       下面一个小的工具函数可以将资源id转换为一个Uri:

1
2
3
4
5
6
public static final String ANDROID_RESOURCE = "android.resource://";
public static final String FOREWARD_SLASH = "/";

private static Uri resourceIdToUri(Context context, int resourceId) {
return Uri.parse(ANDROID_RESOURCE + context.getPackageName() + FOREWARD_SLASH + resourceId);
}

       当然,Uri并不一定是从资源id中创建,它可以是任意Uri。

参考资料:
签到钱就到 Glide入门教程——1.入门简介Glide入门教程——2.高级加载

Fork me on GitHub