图片平滑滚动组件 Glide

Glide是一款基于Android的图片加载和图片缓存组件,它可以最大性能地在Android设备上读取、解码、显示图片和视频。Glide可以将远程的图片、视频、动画图片等缓存在设备本地,便于提高用户浏览图片的流畅体验。

Glide最核心的功能就是提高滚动图片列表的性能,并且Glide还能满足对远程图片的读取、改变尺寸以及展示的性能要求。

Glide使用方法

最简单的示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// For a simple view: 
@Override
public void onCreate(Bundle savedInstanceState) {
...

ImageView imageView = (ImageView) findViewById(R.id.my_image_view);

Glide.with(this).load("http://goo.gl/h8qOq7").into(imageView);
}

// For a list:
@Override
public View getView(int position, View recycled, ViewGroup container) {
final ImageView myImageView;
if (recycled == null) {
myImageView = (ImageView) inflater.inflate(R.layout.my_image_view,
container, false);
} else {
myImageView = (ImageView) recycled;
}

String url = myUrls.get(position);

Glide.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.crossFade()
.into(myImageView);

return myImageView;
}

不要忘记在你的AndroidManifest.xml中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />

在Glide上应用Volley通信框架

Volley是Glide的可选项,可以支持http/https来读取图片。

用Gradle:

1
2
3
4
dependencies { 
compile 'com.github.bumptech.glide:volley-integration:1.0.+'
compile 'com.mcxiaoke.volley:library:1.0.+'
}

或者用Maven:

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>  
<groupId>com.github.bumptech.glide</groupId>
<artifactId>volley-integration</artifactId>
<version>1.0.1</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.mcxiaoke.volley</groupId>
<artifactId>library</artifactId>
<version>1.0.5</version>
<type>aar</type>
</dependency>

然后在Activity或者Application中注册 Volley的加载项即可:

1
2
3
4
5
public void onCreate() { 
Glide.get(this).register(GlideUrl.class, InputStream.class,
new VolleyUrlLoader.Factory(yourRequestQueue));
...
}

这样所有的请求就会通过Volley了。

在Glide中应用OkHttp通信框架

除了Volley,Glide中还可以使用OkHttp通信框架,OkHttp同样支持http/https来读取图片。

用Gradle:

1
2
3
4
dependencies { 
compile 'com.github.bumptech.glide:okhttp-integration:1.0.+'
compile 'com.squareup.okhttp:okhttp:2.0.+'
}

或者用Maven:

1
2
3
4
5
6
7
8
9
10
11
12
<dependency> 
<groupId>com.github.bumptech.glide</groupId>
<artifactId>okhttp-integration</artifactId>
<version>1.0.1</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.squareup.okhttp</groupId>
<artifactId>okhttp</artifactId>
<version>2.0.0</version>
<type>jar</type>
</dependency>

然后在Activity或者Application中注册 OkHttp的加载项即可:

1
2
3
4
5
public void onCreate() { 
Glide.get(this).register(GlideUrl.class, InputStream.class,
new OkHttpUrlLoader.Factory(yourOkHttpClient));
...
}

总结

如果你的Android应用中涉及到远程图片的处理,那么Glide组件可以帮助你在图片视频方面优化应用程序。