项目链接:链接:http://pan.baidu.com/s/1jI6mLdc 密码:9i2f
在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。
它的成功让我非常感兴趣。我花了一整晚的时间把玩,决定分享一些自己的经验。在开始之前我想说,Glide和Picasso有90%的相似度,准确的说,就是Picasso的克隆版本。但是在细节上还是有不少区别的。
这个库总之来说效率很恐怖(可以设置图片缓存的,很效率!),搞了3天的异步线程,宝宝反正是被难住了,花了两天做出来图片异步加载..(今晚逛论坛,发现了Glide这个图片框架,20行左右就解决了那个需要300行的代码)
1.使用Glide结合列表的样式进行图片加载:
(1)如果使用的是ListView,可以直接在Adapter的getView方法中使用:
public View getView(int position, View convertView, ViewGroup parent) {
if (null == convertView) {
// .....
}
Glide.with(context).load(imageUrls[position]).into(holder.imageView);
return convertView;
}
if (null == convertView) {
// .....
}
Glide.with(context).load(imageUrls[position]).into(holder.imageView);
return convertView;
}
(2)如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用:
public void onBindViewHolder(RVViewHolder holder, int position) {
Glide.with(MainActivity.this)
.load(args[position])
.into(holder.imageView);
}
Glide.with(MainActivity.this)
.load(args[position])
.into(holder.imageView);
}
2.当图片没能及时显示的话,你可以让他先显示自己定义的图片的话可以使用placeHolder()方法:
Glide.with(context).load(UsageExampleListViewAdapter.eatFoodyImages[0])
.placeholder(R.mipmap.ic_launcher) // clever boy...
.into(imageViewPlaceholder);
.placeholder(R.mipmap.ic_launcher) // clever boy...
.into(imageViewPlaceholder);
3. 图片的缩放,centerCrop()和fitCenter():
// 使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的 Height是match_parent则图片就会被拉伸填充
Glide.with(MainActivity.this).load(args[position]).centerCrop()
.into(holder.imageView);
Glide.with(MainActivity.this).load(args[position]).centerCrop()
.into(holder.imageView);
4.
显示gif动画:
Glide.with(context).load(gifUrl).asGif() // 判断加载的url资源是否为gif格式的资源
.error(R.drawable.full_cake).into(imageViewGif);
5.Glide对于本地视频的解码
.error(R.drawable.full_cake).into(imageViewGif);
通过调用Glide.with(context).load(“图片路径“)方法,Glide能够支持Android设备中的所有视频文件的加载和展示
图片太好看了,哼,就不全发了哎......